pinkman 0.9.8.2 → 0.9.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/pinkman.js +1 -1
- data/app/assets/javascripts/pinkman_base/common.coffee +13 -5
- data/app/assets/javascripts/pinkman_base/{css.coffee → css_and_config.coffee} +2 -1
- data/app/assets/javascripts/pinkman_base/{object.js.coffee.erb → object.coffee.erb} +0 -0
- data/app/assets/javascripts/pinkman_base/pinkman.coffee +3 -0
- data/app/assets/javascripts/pinkman_base/render.coffee.erb +41 -1
- data/app/helpers/pinkman_helper.rb +8 -4
- data/lib/pinkman/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: df7295f0731183847a15dd00281daf106ffff34d
|
4
|
+
data.tar.gz: 0aca39dd1ab281a14c2b9f0bf9cd593873414eeb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8b619cbcf5625f3b969d10792f2b7a260fb295776995bb3b74bcc270c878c22097e069364ed121e81d337ce9b73cbb2458b1e9b19fc2c2cb409c4975dfcab7fd
|
7
|
+
data.tar.gz: 4fc5c39c776ba02e7ade7470b073118696f8a3f323a4a885a2fca3bedf0b389cbfe359a13140bbc6b01dd1f0d4497a38c6f6360da529c056b657252da93852c3
|
@@ -5,8 +5,8 @@
|
|
5
5
|
//= require pinkman_base/object
|
6
6
|
//= require pinkman_base/collection
|
7
7
|
//= require pinkman_base/render
|
8
|
+
//= require pinkman_base/css_and_config
|
8
9
|
//= require pinkman_base/controller
|
9
10
|
//= require pinkman_base/state
|
10
11
|
//= require pinkman_base/router
|
11
|
-
//= require pinkman_base/css
|
12
12
|
//= require pinkman_base/cable
|
@@ -1,9 +1,10 @@
|
|
1
1
|
class window.PinkmanCommon
|
2
2
|
|
3
3
|
constructor: (attributesObject) ->
|
4
|
+
@_listening = true
|
4
5
|
@initialize(attributesObject) if attributesObject?
|
5
6
|
|
6
|
-
@privateAttributes = ['isPink','isObject','isCollection','pinkey','config','pinkmanType','collections','renderQueue']
|
7
|
+
@privateAttributes = ['isPink','isObject','isCollection','pinkey','config','pinkmanType','collections','renderQueue','_listening']
|
7
8
|
|
8
9
|
@mixin: (args...) ->
|
9
10
|
Pinkman.mixin(args...)
|
@@ -46,8 +47,18 @@ class window.PinkmanCommon
|
|
46
47
|
if attr? and value?
|
47
48
|
this[attr] = value
|
48
49
|
callback(this) if typeof callback == 'function'
|
49
|
-
@
|
50
|
+
@sync(attr) if @_listening
|
50
51
|
return this
|
52
|
+
|
53
|
+
sync: (attribute) ->
|
54
|
+
if attribute? and attribute!=''
|
55
|
+
Pinkman.sync(this, attribute, this[attribute])
|
56
|
+
else
|
57
|
+
Pinkman.sync(this, k, v) for k, v of @attributes()
|
58
|
+
true
|
59
|
+
|
60
|
+
stop: ->
|
61
|
+
@_listening = no
|
51
62
|
|
52
63
|
# Desc: sets the attribute as undefined (destroy attribute)
|
53
64
|
unset: (attr,callback) ->
|
@@ -98,9 +109,6 @@ class window.PinkmanCommon
|
|
98
109
|
template: options + '-template'
|
99
110
|
target: options
|
100
111
|
|
101
|
-
watch: () ->
|
102
|
-
@_watching = yes
|
103
|
-
|
104
112
|
queue: (options) ->
|
105
113
|
options.id = options.template
|
106
114
|
@renderQueue = new PinkmanCollection unless @renderQueue?
|
@@ -4,4 +4,5 @@ Pinkman.css = (selector,property,value) ->
|
|
4
4
|
|
5
5
|
$(document).ready ->
|
6
6
|
unless $('style#pinkman-css-injector').length
|
7
|
-
$('body').append('<style id="pinkman-css-injector" type="text/css"
|
7
|
+
$('body').append('<style id="pinkman-css-injector" type="text/css">pink{display: inline; margin: 0; padding: 0; color: inherit; background-color: inherit; font: inherit;}</style>')
|
8
|
+
document.createElement('pink') if document.createElement?
|
File without changes
|
@@ -33,9 +33,32 @@ Pinkman.template_engines =
|
|
33
33
|
template = Pinkman.templates.get(template: options.template, engine: options.engine)
|
34
34
|
else
|
35
35
|
template = new Pinkman.object(template: options.template, engine: options.engine)
|
36
|
-
@compile(options.engine, template, $('#' + options.template).html())
|
36
|
+
@compile(options.engine, template, @templateAdapter($('#' + options.template).html()))
|
37
37
|
Pinkman.templates.push(template)
|
38
38
|
return(template)
|
39
|
+
|
40
|
+
|
41
|
+
# attrAdapterHelper: helper for templateAdapter
|
42
|
+
# Helps formating the pink tag.
|
43
|
+
# The pink tag is a custom html tag. Pinkman uses it for binding an object and for updating the rendered html automatically everytime that attribute is changed.
|
44
|
+
# Used in the replace function below. Take a look.
|
45
|
+
attrAdapterHelper: (match,$1,$2,$3) ->
|
46
|
+
# console.log 'lol'
|
47
|
+
array = $2.split('.')
|
48
|
+
attr = array.pop()
|
49
|
+
array.push('pinkey')
|
50
|
+
pinkey = array.join('.')
|
51
|
+
"#{$1}<pink data-pinkey=\"{{ #{pinkey} }}\" data-attribute=\"#{attr}\">{{ #{$2} }}</pink>#{$3}"
|
52
|
+
|
53
|
+
# changes templates html to insert binders so pinkman can make realtime updates
|
54
|
+
templateAdapter: (templateBody) ->
|
55
|
+
if templateBody? and templateBody != ''
|
56
|
+
syncRegex = /([^'"]){{(?!\.)(?:\s)*([\w\d.]+)(?:\s)*}}([^'"])/gm
|
57
|
+
content = templateBody.replace(syncRegex,@attrAdapterHelper)
|
58
|
+
escapeSyncingRegex = /{{\./gm
|
59
|
+
content.replace(escapeSyncingRegex,'{{')
|
60
|
+
else
|
61
|
+
''
|
39
62
|
|
40
63
|
context: (options) ->
|
41
64
|
options.object = options.context if options.context?
|
@@ -81,6 +104,23 @@ Pinkman.template_engines =
|
|
81
104
|
options.callback(options.object,content) if options.callback? and typeof options.callback == 'function'
|
82
105
|
return(content)
|
83
106
|
|
107
|
+
# Pinkman sync:
|
108
|
+
|
109
|
+
# what it does: finds every ocorrence of a given attribute
|
110
|
+
# of an object in the html rendered and updates its value.
|
111
|
+
|
112
|
+
# input: obj, attribute, value(opcional)
|
113
|
+
# output: updates html
|
114
|
+
Pinkman.__syncing = new Object
|
115
|
+
|
116
|
+
Pinkman.sync = (obj,attribute,value) ->
|
117
|
+
if typeof obj == 'object' and obj.pinkey? and obj[attribute]? and Pinkman.isPrintable(obj[attribute])
|
118
|
+
# clearTimeout(Pinkman.__syncing[attribute]) if Pinkman.__syncing[attribute]?
|
119
|
+
# Pinkman.__syncing[attribute] = sleep 0.5, ->
|
120
|
+
value = obj[attribute] unless value? and value != ''
|
121
|
+
$("pink[data-pinkey='#{obj.pinkey}'][data-attribute='#{attribute}']").html(value)
|
122
|
+
|
123
|
+
|
84
124
|
Pinkman.render = (options) ->
|
85
125
|
options.reRender = true unless options.reRender? and options.reRender == false
|
86
126
|
options.collectionReRender = true unless options.collectionReRender? and options.collectionReRender == false
|
@@ -9,7 +9,7 @@ module PinkmanHelper
|
|
9
9
|
def textarea hash, *args
|
10
10
|
name = hash[:name]
|
11
11
|
content_tag('textarea',hash.merge(data: {pinkey: pinkey, action: name}, value: write(name)), *args) do
|
12
|
-
|
12
|
+
write_and_escape_sync('name')
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -32,10 +32,14 @@ module PinkmanHelper
|
|
32
32
|
def write string
|
33
33
|
raw("{{#{string}}}")
|
34
34
|
end
|
35
|
-
|
36
|
-
|
37
|
-
|
35
|
+
alias w write
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
def write_and_escape_sync string
|
40
|
+
raw("{{.#{string}}}")
|
38
41
|
end
|
42
|
+
alias _w write_and_escape_sync
|
39
43
|
|
40
44
|
def pinkey
|
41
45
|
w('pinkey')
|
data/lib/pinkman/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pinkman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Agilso Oliveira
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -186,10 +186,10 @@ files:
|
|
186
186
|
- app/assets/javascripts/pinkman_base/collection.coffee
|
187
187
|
- app/assets/javascripts/pinkman_base/common.coffee
|
188
188
|
- app/assets/javascripts/pinkman_base/controller.coffee
|
189
|
-
- app/assets/javascripts/pinkman_base/
|
189
|
+
- app/assets/javascripts/pinkman_base/css_and_config.coffee
|
190
190
|
- app/assets/javascripts/pinkman_base/glue.coffee
|
191
191
|
- app/assets/javascripts/pinkman_base/mixins.coffee
|
192
|
-
- app/assets/javascripts/pinkman_base/object.
|
192
|
+
- app/assets/javascripts/pinkman_base/object.coffee.erb
|
193
193
|
- app/assets/javascripts/pinkman_base/pinkman.coffee
|
194
194
|
- app/assets/javascripts/pinkman_base/render.coffee.erb
|
195
195
|
- app/assets/javascripts/pinkman_base/router.coffee
|