rbjs 0.10.2 → 0.10.3
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.
- data/lib/rbjs.rb +12 -7
- data/lib/rbjs/version.rb +1 -1
- data/spec/rbjs_spec.rb +20 -0
- metadata +4 -4
data/lib/rbjs.rb
CHANGED
@@ -36,7 +36,7 @@ module Rbjs
|
|
36
36
|
|
37
37
|
def evaluate function_parameters = nil
|
38
38
|
instance_exec *function_parameters, &@_block
|
39
|
-
@_called_expressions.map(&:
|
39
|
+
@_called_expressions.map(&:last_childs).flatten.reject(&:is_argument).map(&:to_s).join(";\n")
|
40
40
|
end
|
41
41
|
|
42
42
|
def method_missing name, *args, &block
|
@@ -57,10 +57,11 @@ module Rbjs
|
|
57
57
|
|
58
58
|
class Expression
|
59
59
|
attr_accessor :parent_expression
|
60
|
-
attr_accessor :
|
60
|
+
attr_accessor :child_expressions
|
61
61
|
attr_accessor :is_argument
|
62
62
|
|
63
63
|
def initialize name, view_context = nil, *args, &block
|
64
|
+
@child_expressions = []
|
64
65
|
@name = name.to_s.gsub '!', '()'
|
65
66
|
@_view_context = view_context
|
66
67
|
args << block if block_given?
|
@@ -70,7 +71,7 @@ module Rbjs
|
|
70
71
|
def method_missing name, *args, &block
|
71
72
|
expression = Expression.new name, @_view_context, *args, &block
|
72
73
|
expression.parent_expression = self
|
73
|
-
|
74
|
+
@child_expressions << expression
|
74
75
|
expression
|
75
76
|
end
|
76
77
|
|
@@ -89,17 +90,21 @@ module Rbjs
|
|
89
90
|
@name + argument_list
|
90
91
|
end
|
91
92
|
end
|
93
|
+
|
94
|
+
def to_ary
|
95
|
+
nil
|
96
|
+
end
|
92
97
|
|
93
98
|
def argument_list
|
94
99
|
return '' if @arguments.empty?
|
95
100
|
'(' + @arguments.join(', ') + ')'
|
96
101
|
end
|
97
102
|
|
98
|
-
def
|
99
|
-
if @
|
100
|
-
@
|
103
|
+
def last_childs
|
104
|
+
if @child_expressions.length > 0
|
105
|
+
@child_expressions.map(&:last_childs).flatten
|
101
106
|
else
|
102
|
-
self
|
107
|
+
[self]
|
103
108
|
end
|
104
109
|
end
|
105
110
|
|
data/lib/rbjs/version.rb
CHANGED
data/spec/rbjs_spec.rb
CHANGED
@@ -133,4 +133,24 @@ describe Rbjs::Root, '#evaluate' do
|
|
133
133
|
js.strip.should == "docs.map(function(doc) {\nw.match(/^_/);\nemit(doc)})"
|
134
134
|
end
|
135
135
|
|
136
|
+
it "should render multiple calls to locally assigned expressions" do
|
137
|
+
js = build do
|
138
|
+
selector = jQuery('#content').find('.note')
|
139
|
+
selector.hide!
|
140
|
+
selector.html 'some text'
|
141
|
+
end
|
142
|
+
js.strip.should == "jQuery(\"#content\").find(\".note\").hide();\njQuery(\"#content\").find(\".note\").html(\"some text\")"
|
143
|
+
end
|
144
|
+
|
145
|
+
it "should support multiple nested functions" do
|
146
|
+
js = build do
|
147
|
+
jQuery('.note').fadeIn do
|
148
|
+
delay 1000 do
|
149
|
+
jQuery('.note').hide!
|
150
|
+
end
|
151
|
+
end
|
152
|
+
end
|
153
|
+
js.strip.should == ''
|
154
|
+
end
|
155
|
+
|
136
156
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rbjs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.10.
|
4
|
+
version: 0.10.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-03-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: json
|
16
|
-
requirement: &
|
16
|
+
requirement: &70186833414720 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70186833414720
|
25
25
|
description: Remote Javascript Builder for Ruby on Rails
|
26
26
|
email:
|
27
27
|
- buhrmi@gmail.com
|