pinkman 0.9.8.2 → 0.9.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|