ruby2js 2.0.14 → 2.0.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a58359aafe69400f4a0599274386d49db846339
4
- data.tar.gz: 469e9be4d6e16149c1d81e58871e8b5defb61bae
3
+ metadata.gz: 656fbf21438b096f37a606de1a6d3bf19a55bb5b
4
+ data.tar.gz: 1251eeab90080384e8d97257184129a77859a69e
5
5
  SHA512:
6
- metadata.gz: 69fb77fe3d91e70e0d4123b4533f5511f084c611a5988acb8c3da3af8bc7db8d799d81e7dce16794a6dad612c48d86dfebac80879b4cfccf5c1c51eb0654e1c9
7
- data.tar.gz: fe23482038f5e51739a493474ebb3a60d68a4ff2514e41b3d4fc6dc0895924a77bbf29f48f7f0668c1229065e5fe81074048eb00a2ca78d1f6cfbdd7f51d2cde
6
+ metadata.gz: ddfbded6bfafa9e257f1ab8dc3a309f12381e2a0edf7e76cca328d7d0ebf279f3a02775cac1c22ad5762094efa30cc3a49be03620e8aa8cf79ffccfe4ae54d6e
7
+ data.tar.gz: 45116a4d10458125e78b3589ca25e51c5e1b115ffe6202b649d70fbd59bac5a6bf06cee8b155f7a41c8d05d6c3f85d4174ec360ede27ecaae9c2658664458bde
@@ -7,7 +7,7 @@ module Ruby2JS
7
7
  # (blockarg :c))
8
8
 
9
9
  handle :args do |*args|
10
- parse_all *args, join: ', '
10
+ parse_all(*args, join: ', ')
11
11
  end
12
12
  end
13
13
  end
@@ -22,9 +22,9 @@ module Ruby2JS
22
22
  end
23
23
  else
24
24
  if items.length <= 1
25
- put '['; parse_all *items, join: ', '; put ']'
25
+ put '['; parse_all(*items, join: ', '); put ']'
26
26
  else
27
- compact { puts '['; parse_all *items, join: ",#{@ws}"; sput ']' }
27
+ compact { puts '['; parse_all(*items, join: ",#{@ws}"); sput ']' }
28
28
  end
29
29
  end
30
30
  end
@@ -28,7 +28,7 @@ module Ruby2JS
28
28
  statements.compact!
29
29
  end
30
30
 
31
- parse_all *statements, state: state, join: @sep
31
+ parse_all(*statements, state: state, join: @sep)
32
32
  end
33
33
 
34
34
  def combine_properties(body)
@@ -75,8 +75,8 @@ module Ruby2JS
75
75
 
76
76
  elsif m.type == :send and m.children.first == nil
77
77
  if m.children[1] == :attr_accessor
78
- m.children[2..-1].map do |sym|
79
- var = sym.children.first
78
+ m.children[2..-1].map do |child_sym|
79
+ var = child_sym.children.first
80
80
  s(:prop, s(:attr, name, :prototype), var =>
81
81
  {enumerable: s(:true), configurable: s(:true),
82
82
  get: s(:block, s(:send, nil, :proc), s(:args),
@@ -85,8 +85,8 @@ module Ruby2JS
85
85
  s(:ivasgn, :"@#{var}", s(:lvar, var)))})
86
86
  end
87
87
  elsif m.children[1] == :attr_reader
88
- m.children[2..-1].map do |sym|
89
- var = sym.children.first
88
+ m.children[2..-1].map do |child_sym|
89
+ var = child_sym.children.first
90
90
  s(:prop, s(:attr, name, :prototype), var =>
91
91
  {get: s(:block, s(:send, nil, :proc), s(:args),
92
92
  s(:return, s(:ivar, :"@#{var}"))),
@@ -94,8 +94,8 @@ module Ruby2JS
94
94
  configurable: s(:true)})
95
95
  end
96
96
  elsif m.children[1] == :attr_writer
97
- m.children[2..-1].map do |sym|
98
- var = sym.children.first
97
+ m.children[2..-1].map do |child_sym|
98
+ var = child_sym.children.first
99
99
  s(:prop, s(:attr, name, :prototype), var =>
100
100
  {set: s(:block, s(:send, nil, :proc), s(:args, s(:arg, var)),
101
101
  s(:ivasgn, :"@#{var}", s(:lvar, var))),
@@ -244,9 +244,10 @@ module Ruby2JS
244
244
  *descriptor.map { |key, value| s(:pair, s(:sym, key), value) }))
245
245
  else
246
246
  parse s(:send, s(:const, nil, :Object), :defineProperties,
247
- obj, s(:hash, *props.map {|prop, descriptor|
248
- s(:pair, s(:sym, prop), s(:hash, *descriptor.map {|key, value|
249
- s(:pair, s(:sym, key), value) }))}))
247
+ obj, s(:hash, *props.map {|hprop, hdescriptor|
248
+ s(:pair, s(:sym, hprop),
249
+ s(:hash, *hdescriptor.map {|key, value|
250
+ s(:pair, s(:sym, key), value) }))}))
250
251
  end
251
252
  elsif @ast.type == :method
252
253
  parse s(:send, *args)
@@ -4,6 +4,7 @@ module Ruby2JS
4
4
  # (cvar :@@a)
5
5
 
6
6
  handle :cvar do |var|
7
+ @class_name ||= nil
7
8
  if @class_name
8
9
  parse @class_name
9
10
  put var.to_s.sub('@@', "._")
@@ -14,10 +14,10 @@ module Ruby2JS
14
14
  handle :hostvalue do |value|
15
15
  case value
16
16
  when Hash
17
- parse s(:hash, *value.map {|key, value| s(:pair, s(:hostvalue, key),
18
- s(:hostvalue, value))})
17
+ parse s(:hash, *value.map {|key, hvalue| s(:pair, s(:hostvalue, key),
18
+ s(:hostvalue, hvalue))})
19
19
  when Array
20
- parse s(:array, *value.map {|value| s(:hostvalue, value)})
20
+ parse s(:array, *value.map {|hvalue| s(:hostvalue, hvalue)})
21
21
  when String
22
22
  parse s(:str, value)
23
23
  when Integer
@@ -44,8 +44,8 @@ module Ruby2JS
44
44
 
45
45
  node = node.children[2] ? s(:autoreturn, node.children[2]) : nil
46
46
 
47
- conditions.each do |condition, statements|
48
- node = s(:if, condition, statements, node)
47
+ conditions.each do |condition, cstatements|
48
+ node = s(:if, condition, cstatements, node)
49
49
  end
50
50
  end
51
51
  block.push node
@@ -16,8 +16,6 @@ module Ruby2JS
16
16
  handle :send, :sendw, :attr, :call do |receiver, method, *args|
17
17
  ast = @ast
18
18
 
19
- width = ((ast.type == :sendw && !@nl.empty?) ? 0 : @width)
20
-
21
19
  # strip '!' and '?' decorations
22
20
  method = method.to_s[0..-2] if method =~ /\w[!?]$/
23
21
 
@@ -38,7 +36,7 @@ module Ruby2JS
38
36
  t2,m2,*args2 = receiver.children.first.children
39
37
  if not t2 and [:lambda, :proc].include? m2 and args2.length == 0
40
38
  (@state == :statement ? group(receiver) : parse(receiver))
41
- put '('; parse_all *args, join: ', '; put ')'
39
+ put '('; parse_all(*args, join: ', '); put ')'
42
40
  return
43
41
  end
44
42
  end
@@ -68,10 +66,10 @@ module Ruby2JS
68
66
  parse s(:not, receiver)
69
67
 
70
68
  elsif method == :[]
71
- parse receiver; put '['; parse_all *args, join: ', '; put ']'
69
+ parse receiver; put '['; parse_all(*args, join: ', '); put ']'
72
70
 
73
71
  elsif method == :[]=
74
- parse receiver; put '['; parse_all *args[0..-2], join: ', '; put '] = '
72
+ parse receiver; put '['; parse_all(*args[0..-2], join: ', '); put '] = '
75
73
  parse args[-1]
76
74
 
77
75
  elsif [:-@, :+@, :~, '~'].include? method
@@ -133,7 +131,7 @@ module Ruby2JS
133
131
 
134
132
  put "new "; parse receiver
135
133
  if ast.is_method?
136
- put '('; parse_all *args, join: ', '; put ')'
134
+ put '('; parse_all(*args, join: ', '); put ')'
137
135
  end
138
136
  elsif args.length == 1 and args.first.type == :send
139
137
  # accommodation for JavaScript like new syntax w/argument list
@@ -179,9 +177,9 @@ module Ruby2JS
179
177
  put "#{ '.' if receiver && method}#{ method }"
180
178
 
181
179
  if args.length <= 1
182
- put "("; parse_all *args, join: ', '; put ')'
180
+ put "("; parse_all(*args, join: ', '); put ')'
183
181
  else
184
- compact { puts "("; parse_all *args, join: ",#@ws"; sput ')' }
182
+ compact { puts "("; parse_all(*args, join: ",#@ws"); sput ')' }
185
183
  end
186
184
  end
187
185
  end
@@ -22,7 +22,7 @@ module Ruby2JS
22
22
 
23
23
  unless undecls.empty?
24
24
  return parse s(:begin,
25
- *undecls.map {|name| s(:lvasgn, name)}, @ast), @state
25
+ *undecls.map {|uname| s(:lvasgn, uname)}, @ast), @state
26
26
  end
27
27
  end
28
28
 
@@ -5,7 +5,7 @@ module Ruby2JS
5
5
  # (str 'a'))
6
6
 
7
7
  handle :xstr do |*children|
8
- str = eval capture { parse_all *children }
8
+ str = eval capture { parse_all(*children) }
9
9
 
10
10
  if @binding
11
11
  puts @binding.eval(str).to_s
@@ -37,10 +37,15 @@ module Ruby2JS
37
37
  @@handlers.each do |name|
38
38
  @handlers[name] = method("on_#{name}")
39
39
  end
40
- end
41
40
 
42
- def binding=(binding)
43
- @binding = binding
41
+ @state = nil
42
+ @block_this = nil
43
+ @block_depth = nil
44
+ @prop = nil
45
+ @instance_method = nil
46
+ @prototype = nil
47
+ @class_parent = nil
48
+ @class_name = nil
44
49
  end
45
50
 
46
51
  def width=(width)
@@ -117,6 +122,7 @@ module Ruby2JS
117
122
  handler.call(*ast.children)
118
123
  ensure
119
124
  @ast = oldast
125
+ @state = oldstate
120
126
  end
121
127
 
122
128
  def parse_all(*args)
@@ -39,6 +39,7 @@ module Ruby2JS
39
39
  @ngAppUses = []
40
40
  @ngClassUses = []
41
41
  @ngClassOmit = []
42
+ @ngScope = nil
42
43
  super
43
44
  end
44
45
 
@@ -74,7 +75,7 @@ module Ruby2JS
74
75
 
75
76
  # convert use calls into dependencies
76
77
  depends = @ngAppUses.map {|sym| s(:sym, sym)} + extract_uses(block)
77
- depends = depends.map {|node| node.children.first.to_s}.uniq.sort.
78
+ depends = depends.map {|dnode| dnode.children.first.to_s}.uniq.sort.
78
79
  map {|sym| s(:str, sym)}
79
80
 
80
81
  ngApp, @ngApp, @ngChildren = @ngApp, nil, nil
@@ -129,7 +130,7 @@ module Ruby2JS
129
130
 
130
131
  @ngClassUses -= @ngClassOmit + [name.children.last]
131
132
  args = @ngClassUses.map {|sym| s(:arg, sym)} + uses
132
- args = args.map {|node| node.children.first.to_sym}.uniq.sort.
133
+ args = args.map {|anode| anode.children.first.to_sym}.uniq.sort.
133
134
  map {|sym| s(:arg, sym)}
134
135
  @ngClassUses, @ngClassOmit = [], []
135
136
 
@@ -249,7 +250,7 @@ module Ruby2JS
249
250
  @ngClassUses -= @ngClassOmit
250
251
  args = node.children[1].children
251
252
  args += @ngClassUses.map {|sym| s(:arg, sym)} + extract_uses(block)
252
- args = args.map {|node| node.children.first.to_sym}.uniq.sort.
253
+ args = args.map {|anode| anode.children.first.to_sym}.uniq.sort.
253
254
  map {|sym| s(:arg, sym)}
254
255
 
255
256
  node.updated :block, [target, s(:args, *args), s(:begin, *block)]
@@ -322,7 +323,7 @@ module Ruby2JS
322
323
  @ngClassUses.delete call.children[2].children[0]
323
324
  args = process_all(node.children[1].children)
324
325
  args += @ngClassUses.map {|sym| s(:arg, sym)} + extract_uses(block)
325
- args = args.map {|node| node.children.first.to_sym}.uniq.sort.
326
+ args = args.map {|anode| anode.children.first.to_sym}.uniq.sort.
326
327
  map {|sym| s(:arg, sym)}
327
328
 
328
329
  # construct a function
@@ -578,7 +579,7 @@ module Ruby2JS
578
579
  def extract_uses(block)
579
580
  # find the block
580
581
  while block.length == 1 and block.first and block.first.type == :begin
581
- block.push *block.shift.children
582
+ block.push(*block.shift.children)
582
583
  end
583
584
 
584
585
  # find use class method calls
@@ -174,8 +174,6 @@ module Ruby2JS
174
174
 
175
175
 
176
176
  elsif method == :[]
177
- index = args.first
178
-
179
177
  # resolve negative literal indexes
180
178
  i = proc do |index|
181
179
  if index.type == :int and index.children.first < 0
@@ -186,6 +184,8 @@ module Ruby2JS
186
184
  end
187
185
  end
188
186
 
187
+ index = args.first
188
+
189
189
  if not index
190
190
  super
191
191
 
@@ -65,6 +65,11 @@ module Ruby2JS
65
65
  module JQuery
66
66
  include SEXP
67
67
 
68
+ def initialize(*args)
69
+ @react = nil
70
+ super
71
+ end
72
+
68
73
  # map $$ to $
69
74
  def on_gvar(node)
70
75
  if node.children[0] == :$$
@@ -109,32 +114,32 @@ module Ruby2JS
109
114
  domprops = %w(checked disabled readonly readOnly required)
110
115
 
111
116
  stopProps = false
112
- rewrite_tilda = proc do |node|
117
+ rewrite_tilda = proc do |tnode|
113
118
  # Example conversion:
114
119
  # before:
115
120
  # (send (send (send (send nil :a) :b) :c) :~)
116
121
  # after:
117
122
  # (send (send (send nil "$" (send nil :a)) :b) :c)
118
- if node.type == :send and node.children[0]
119
- stopProps = true if node.children[1] == :[]
120
- if node.children[1] == :~ and node.children[0].children[1] == :~
123
+ if tnode.type == :send and tnode.children[0]
124
+ stopProps = true if tnode.children[1] == :[]
125
+ if tnode.children[1] == :~ and tnode.children[0].children[1] == :~
121
126
  # consecutive tildes
122
- if node.children[0].children[0].children[1] == :~
123
- result = node.children[0].children[0].children[0]
127
+ if tnode.children[0].children[0].children[1] == :~
128
+ result = tnode.children[0].children[0].children[0]
124
129
  else
125
- result = s(:attr, node.children[0].children[0], :~)
130
+ result = s(:attr, tnode.children[0].children[0], :~)
126
131
  end
127
132
  s(:attr, s(:attr, process(result), :~), :~)
128
133
  else
129
134
  # possible getter/setter
130
- method = node.children[1]
135
+ method = tnode.children[1]
131
136
  method = method.to_s.chomp('=') if method =~ /=$/
132
137
  method = :each! if method == :each
133
- rewrite = [rewrite_tilda[node.children[0]],
134
- method, *node.children[2..-1]]
135
- if stopProps or props.include? node.children[1]
136
- rewrite[1] = node.children[1]
137
- node.updated nil, rewrite
138
+ rewrite = [rewrite_tilda[tnode.children[0]],
139
+ method, *tnode.children[2..-1]]
140
+ if stopProps or props.include? tnode.children[1]
141
+ rewrite[1] = tnode.children[1]
142
+ tnode.updated nil, rewrite
138
143
  elsif domprops.include? method.to_s
139
144
  method = :readOnly if method.to_s == 'readonly'
140
145
  s(:send, rewrite[0], :prop, s(:sym, method), *rewrite[2..-1])
@@ -142,16 +147,16 @@ module Ruby2JS
142
147
  s(:send, *rewrite)
143
148
  end
144
149
  end
145
- elsif node.type == :block
150
+ elsif tnode.type == :block
146
151
  # method call with a block parameter
147
- node.updated nil, [rewrite_tilda[node.children[0]],
148
- *node.children[1..-1]]
149
- elsif node.type == :array
152
+ tnode.updated nil, [rewrite_tilda[tnode.children[0]],
153
+ *tnode.children[1..-1]]
154
+ elsif tnode.type == :array
150
155
  # innermost expression is an array
151
- s(:send, nil, '$', *node)
156
+ s(:send, nil, '$', *tnode)
152
157
  else
153
158
  # innermost expression is a scalar
154
- s(:send, nil, '$', node)
159
+ s(:send, nil, '$', tnode)
155
160
  end
156
161
  end
157
162
 
@@ -5,6 +5,11 @@ module Ruby2JS
5
5
  module MiniTestJasmine
6
6
  include SEXP
7
7
 
8
+ def initialize(*args)
9
+ @jasmine_describe = nil
10
+ super
11
+ end
12
+
8
13
  RELOPS = [:<, :<=, :==, :>=, :>].
9
14
  map {|sym| Parser::AST::Node.new :sym, [sym]}
10
15
 
@@ -17,17 +22,17 @@ module Ruby2JS
17
22
  body = body.first.children
18
23
  end
19
24
 
20
- body = body.map do |node|
21
- if node.type == :def and node.children.first =~ /^test_/
25
+ body = body.map do |bnode|
26
+ if bnode.type == :def and bnode.children.first =~ /^test_/
22
27
  s(:block, s(:send, nil, :it, s(:str,
23
- node.children.first.to_s.sub(/^test_/, '').gsub('_', ' '))),
24
- s(:args), node.children.last)
25
- elsif node.type == :def and node.children.first == :setup
26
- s(:block, s(:send, nil, :before), s(:args), node.children.last)
27
- elsif node.type == :def and node.children.first == :teardown
28
- s(:block, s(:send, nil, :after), s(:args), node.children.last)
28
+ bnode.children.first.to_s.sub(/^test_/, '').gsub('_', ' '))),
29
+ s(:args), bnode.children.last)
30
+ elsif bnode.type == :def and bnode.children.first == :setup
31
+ s(:block, s(:send, nil, :before), s(:args), bnode.children.last)
32
+ elsif bnode.type == :def and bnode.children.first == :teardown
33
+ s(:block, s(:send, nil, :after), s(:args), bnode.children.last)
29
34
  else
30
- node
35
+ bnode
31
36
  end
32
37
  end
33
38
 
@@ -63,6 +63,14 @@ module Ruby2JS
63
63
  ReactAttrMap = Hash[ReactAttrs.map {|name| [name.downcase, name]}]
64
64
  ReactAttrMap['for'] = 'htmlFor'
65
65
 
66
+ def initialize(*args)
67
+ @react = nil
68
+ @reactApply = nil
69
+ @reactBlock = nil
70
+ @reactClass = nil
71
+ super
72
+ end
73
+
66
74
  def options=(options)
67
75
  super
68
76
  @react = true if options[:react]
@@ -105,7 +113,7 @@ module Ruby2JS
105
113
  # collect static properties/functions
106
114
  statics = []
107
115
  body.select {|child| child.type == :defs}.each do |child|
108
- parent, mname, args, *block = child.children
116
+ _parent, mname, args, *block = child.children
109
117
  if child.is_method?
110
118
  statics << s(:pair, s(:sym, mname), process(child.updated(:block,
111
119
  [s(:send, nil, :proc), args, s(:autoreturn, *block)])))
@@ -181,8 +189,8 @@ module Ruby2JS
181
189
  end
182
190
 
183
191
  # build a hash for state
184
- state = s(:hash, *assigns.map {|node| s(:pair, s(:str,
185
- node.children.first.to_s[1..-1]), node.children.last)})
192
+ state = s(:hash, *assigns.map {|anode| s(:pair, s(:str,
193
+ anode.children.first.to_s[1..-1]), anode.children.last)})
186
194
 
187
195
  # modify block to build and/or return state
188
196
  if block.empty?
@@ -567,53 +575,53 @@ module Ruby2JS
567
575
  end
568
576
  end
569
577
 
570
- rewrite_tilda = proc do |node|
578
+ rewrite_tilda = proc do |tnode|
571
579
  # Example conversion:
572
580
  # before:
573
581
  # (send (send nil :a) :text) :~)
574
582
  # after:
575
583
  # (send (gvar :$a))), :text)
576
- if node.type == :send and node.children[0]
577
- if node.children[1] == :~ and node.children[0].children[1] == :~
584
+ if tnode.type == :send and tnode.children[0]
585
+ if tnode.children[1] == :~ and tnode.children[0].children[1] == :~
578
586
  # consecutive tildes
579
- if node.children[0].children[0].children[1] == :~
580
- result = node.children[0].children[0].children[0]
587
+ if tnode.children[0].children[0].children[1] == :~
588
+ result = tnode.children[0].children[0].children[0]
581
589
  else
582
- result = s(:attr, node.children[0].children[0], '~')
590
+ result = s(:attr, tnode.children[0].children[0], '~')
583
591
  end
584
592
  s(:attr, s(:attr, process(result), '~'), '~')
585
593
  else
586
594
  # possible getter/setter
587
- method = node.children[1]
595
+ method = tnode.children[1]
588
596
  method = method.to_s.chomp('=') if method =~ /=$/
589
- rewrite = [rewrite_tilda[node.children[0]],
590
- method, *node.children[2..-1]]
591
- rewrite[1] = node.children[1]
592
- node.updated nil, rewrite
597
+ rewrite = [rewrite_tilda[tnode.children[0]],
598
+ method, *tnode.children[2..-1]]
599
+ rewrite[1] = tnode.children[1]
600
+ tnode.updated nil, rewrite
593
601
  end
594
- elsif node.children.first == nil and Symbol === node.children[1]
602
+ elsif tnode.children.first == nil and Symbol === tnode.children[1]
595
603
  # innermost expression is a scalar
596
- s(:gvar, "$#{node.children[1]}")
597
- elsif node.type == :lvar
598
- s(:gvar, "$#{node.children[0]}")
599
- elsif node.type == :str
600
- if node.children.first =~ /^#[-\w]+$/
604
+ s(:gvar, "$#{tnode.children[1]}")
605
+ elsif tnode.type == :lvar
606
+ s(:gvar, "$#{tnode.children[0]}")
607
+ elsif tnode.type == :str
608
+ if tnode.children.first =~ /^#[-\w]+$/
601
609
  s(:send, s(:attr, nil, :document), :getElementById,
602
- s(:str, node.children.first[1..-1].gsub('_', '-')))
603
- elsif node.children.first =~ /^(\.[-\w]+)+$/
610
+ s(:str, tnode.children.first[1..-1].gsub('_', '-')))
611
+ elsif tnode.children.first =~ /^(\.[-\w]+)+$/
604
612
  s(:send, s(:send, s(:attr, nil, :document),
605
613
  :getElementsByClassName, s(:str,
606
- node.children.first[1..-1].gsub('.', ' ').gsub('_', '-'))),
614
+ tnode.children.first[1..-1].gsub('.', ' ').gsub('_', '-'))),
607
615
  :[], s(:int, 0))
608
- elsif node.children.first =~ /^[-\w]+$/
616
+ elsif tnode.children.first =~ /^[-\w]+$/
609
617
  s(:send, s(:send, s(:attr, nil, :document),
610
618
  :getElementsByTagName, s(:str,
611
- node.children.first.gsub('_', '-'))), :[], s(:int, 0))
619
+ tnode.children.first.gsub('_', '-'))), :[], s(:int, 0))
612
620
  else
613
- s(:send, s(:attr, nil, :document), :querySelector, node)
621
+ s(:send, s(:attr, nil, :document), :querySelector, tnode)
614
622
  end
615
623
  else
616
- s(:send, s(:attr, nil, :document), :querySelector, node)
624
+ s(:send, s(:attr, nil, :document), :querySelector, tnode)
617
625
  end
618
626
  end
619
627
 
@@ -644,7 +652,7 @@ module Ruby2JS
644
652
  end
645
653
 
646
654
  # if a hash argument is already passed, merge in id value
647
- hash = children.find_index {|node| node.type == :hash}
655
+ hash = children.find_index {|cnode| cnode.type == :hash}
648
656
  if hash
649
657
  children[hash] = s(:hash, pair, *children[hash].children)
650
658
  else
@@ -882,14 +890,14 @@ module Ruby2JS
882
890
  node.children[1].type == :block
883
891
  return if node.type == :defs
884
892
 
885
- child = node.children.first
886
-
887
893
  base = @reactIvars[:asgn].dup if [:if, :case].include? node.type
888
894
 
889
895
  node.children.each do |child|
890
896
  react_walk(child) if Parser::AST::Node === child
891
897
  end
892
898
 
899
+ child = node.children.first
900
+
893
901
  case node.type
894
902
  when :if, :case
895
903
  @reactIvars[:cond] += @reactIvars[:asgn] - base
@@ -5,12 +5,17 @@ module Ruby2JS
5
5
  module Require
6
6
  include SEXP
7
7
 
8
- @@valid_path = /\A[-\w_.]+\Z/
8
+ @@valid_path = /\A[-\w.]+\Z/
9
9
 
10
10
  def self.valid_path=(valid_path)
11
11
  @@valid_path = valid_path
12
12
  end
13
13
 
14
+ def initialize(*args)
15
+ @require_expr = nil
16
+ super
17
+ end
18
+
14
19
  def on_send(node)
15
20
  if
16
21
  not @require_expr and # only statements
@@ -52,6 +52,8 @@ module Ruby2JS
52
52
  @lines = [Line.new]
53
53
  @line = @lines.last
54
54
  @timestamps = {}
55
+
56
+ @ast = nil
55
57
  end
56
58
 
57
59
  def timestamp(file)
@@ -222,7 +224,7 @@ module Ruby2JS
222
224
  # survey what we have to work with, keeping track of a possible
223
225
  # split of the last argument or value
224
226
  work = []
225
- indent = len = 0
227
+ len = 0
226
228
  trail = split = nil
227
229
  slice = @lines[mark.first..-1]
228
230
  reindent(slice)
@@ -250,7 +252,7 @@ module Ruby2JS
250
252
  if slice[split[2]].indent < slice[split[2]+1].indent
251
253
  # collapse all but the last argument (typically a hash or function)
252
254
  close = slice.pop
253
- slice[-1].push *close
255
+ slice[-1].push(*close)
254
256
  @lines[mark.first] = Line.new(*work[0..split[1]-1])
255
257
  @lines[mark.first+1..-1] = slice[split[2]+1..-1]
256
258
  @line = @lines.last
@@ -260,7 +262,7 @@ module Ruby2JS
260
262
 
261
263
  # return the output as a string
262
264
  def to_s
263
- return @str if @str
265
+ return @str if (@str ||= nil)
264
266
  respace
265
267
  @lines.map(&:to_s).join(@nl)
266
268
  end
@@ -2,7 +2,7 @@ module Ruby2JS
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 2
4
4
  MINOR = 0
5
- TINY = 14
5
+ TINY = 15
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/ruby2js.rb CHANGED
@@ -24,6 +24,7 @@ module Ruby2JS
24
24
 
25
25
  def initialize(comments)
26
26
  @comments = comments
27
+ @ast = nil
27
28
  end
28
29
 
29
30
  def options=(options)
@@ -130,10 +131,7 @@ module Ruby2JS
130
131
  end
131
132
 
132
133
  def self.parse(source, file=nil)
133
- # workaround for https://github.com/whitequark/parser/issues/112
134
- buffer = Parser::Source::Buffer.new(file || '__SOURCE__')
135
- buffer.raw_source = source.encode('utf-8')
136
- Parser::CurrentRuby.new.parse_with_comments(buffer)
134
+ Parser::CurrentRuby.parse_with_comments(source.encode('utf-8'))
137
135
  rescue Parser::SyntaxError => e
138
136
  split = source[0..e.diagnostic.location.begin_pos].split("\n")
139
137
  line, col = split.length, split.last.length
data/ruby2js.gemspec CHANGED
@@ -1,14 +1,14 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: ruby2js 2.0.14 ruby lib
2
+ # stub: ruby2js 2.0.15 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "ruby2js"
6
- s.version = "2.0.14"
6
+ s.version = "2.0.15"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib"]
10
10
  s.authors = ["Sam Ruby"]
11
- s.date = "2016-01-28"
11
+ s.date = "2016-07-30"
12
12
  s.description = " The base package maps Ruby syntax to JavaScript semantics.\n Filters may be provided to add Ruby-specific or framework specific\n behavior.\n"
13
13
  s.email = "rubys@intertwingly.net"
14
14
  s.files = ["README.md", "lib/ruby2js", "lib/ruby2js.rb", "lib/ruby2js/cgi.rb", "lib/ruby2js/converter", "lib/ruby2js/converter.rb", "lib/ruby2js/converter/arg.rb", "lib/ruby2js/converter/args.rb", "lib/ruby2js/converter/array.rb", "lib/ruby2js/converter/begin.rb", "lib/ruby2js/converter/block.rb", "lib/ruby2js/converter/blockpass.rb", "lib/ruby2js/converter/boolean.rb", "lib/ruby2js/converter/break.rb", "lib/ruby2js/converter/case.rb", "lib/ruby2js/converter/casgn.rb", "lib/ruby2js/converter/class.rb", "lib/ruby2js/converter/const.rb", "lib/ruby2js/converter/cvar.rb", "lib/ruby2js/converter/cvasgn.rb", "lib/ruby2js/converter/def.rb", "lib/ruby2js/converter/defined.rb", "lib/ruby2js/converter/defs.rb", "lib/ruby2js/converter/dstr.rb", "lib/ruby2js/converter/for.rb", "lib/ruby2js/converter/hash.rb", "lib/ruby2js/converter/if.rb", "lib/ruby2js/converter/in.rb", "lib/ruby2js/converter/ivar.rb", "lib/ruby2js/converter/ivasgn.rb", "lib/ruby2js/converter/kwbegin.rb", "lib/ruby2js/converter/literal.rb", "lib/ruby2js/converter/logical.rb", "lib/ruby2js/converter/masgn.rb", "lib/ruby2js/converter/module.rb", "lib/ruby2js/converter/next.rb", "lib/ruby2js/converter/nil.rb", "lib/ruby2js/converter/nthref.rb", "lib/ruby2js/converter/opasgn.rb", "lib/ruby2js/converter/prototype.rb", "lib/ruby2js/converter/regexp.rb", "lib/ruby2js/converter/return.rb", "lib/ruby2js/converter/self.rb", "lib/ruby2js/converter/send.rb", "lib/ruby2js/converter/super.rb", "lib/ruby2js/converter/sym.rb", "lib/ruby2js/converter/undef.rb", "lib/ruby2js/converter/until.rb", "lib/ruby2js/converter/untilpost.rb", "lib/ruby2js/converter/var.rb", "lib/ruby2js/converter/vasgn.rb", "lib/ruby2js/converter/while.rb", "lib/ruby2js/converter/whilepost.rb", "lib/ruby2js/converter/xstr.rb", "lib/ruby2js/execjs.rb", "lib/ruby2js/filter", "lib/ruby2js/filter/angular-resource.rb", "lib/ruby2js/filter/angular-route.rb", "lib/ruby2js/filter/angularrb.rb", "lib/ruby2js/filter/camelCase.rb", "lib/ruby2js/filter/functions.rb", "lib/ruby2js/filter/jquery.rb", "lib/ruby2js/filter/minitest-jasmine.rb", "lib/ruby2js/filter/react.rb", "lib/ruby2js/filter/require.rb", "lib/ruby2js/filter/return.rb", "lib/ruby2js/filter/rubyjs.rb", "lib/ruby2js/filter/strict.rb", "lib/ruby2js/filter/underscore.rb", "lib/ruby2js/rails.rb", "lib/ruby2js/serializer.rb", "lib/ruby2js/sinatra.rb", "lib/ruby2js/version.rb", "ruby2js.gemspec"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ruby2js
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.14
4
+ version: 2.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Ruby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-28 00:00:00.000000000 Z
11
+ date: 2016-07-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parser