ruby2js 2.1.24 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +91 -50
- data/lib/ruby2js/converter/args.rb +10 -0
- data/lib/ruby2js/converter/block.rb +1 -1
- data/lib/ruby2js/converter/case.rb +1 -1
- data/lib/ruby2js/converter/casgn.rb +6 -1
- data/lib/ruby2js/converter/class.rb +7 -2
- data/lib/ruby2js/converter/class2.rb +167 -0
- data/lib/ruby2js/converter/def.rb +54 -6
- data/lib/ruby2js/converter/defs.rb +11 -5
- data/lib/ruby2js/converter/dstr.rb +26 -0
- data/lib/ruby2js/converter/for.rb +3 -3
- data/lib/ruby2js/converter/hash.rb +31 -6
- data/lib/ruby2js/converter/if.rb +1 -1
- data/lib/ruby2js/converter/ivasgn.rb +5 -2
- data/lib/ruby2js/converter/masgn.rb +41 -4
- data/lib/ruby2js/converter/send.rb +71 -10
- data/lib/ruby2js/converter/super.rb +21 -8
- data/lib/ruby2js/converter/vasgn.rb +5 -1
- data/lib/ruby2js/converter/while.rb +13 -0
- data/lib/ruby2js/converter.rb +32 -5
- data/lib/ruby2js/es2015/strict.rb +3 -0
- data/lib/ruby2js/es2015.rb +5 -0
- data/lib/ruby2js/es2016/strict.rb +3 -0
- data/lib/ruby2js/es2016.rb +5 -0
- data/lib/ruby2js/es2017/strict.rb +3 -0
- data/lib/ruby2js/es2017.rb +5 -0
- data/lib/ruby2js/execjs.rb +1 -1
- data/lib/ruby2js/filter/camelCase.rb +1 -1
- data/lib/ruby2js/filter/functions.rb +49 -2
- data/lib/ruby2js/filter/vue.rb +66 -45
- data/lib/ruby2js/strict.rb +3 -0
- data/lib/ruby2js/version.rb +3 -3
- data/lib/ruby2js.rb +41 -0
- data/ruby2js.gemspec +3 -1
- metadata +10 -6
- data/lib/ruby2js/filter/angular-resource.rb +0 -25
- data/lib/ruby2js/filter/angular-route.rb +0 -44
- data/lib/ruby2js/filter/angularrb.rb +0 -604
- data/lib/ruby2js/filter/strict.rb +0 -20
data/lib/ruby2js/filter/vue.rb
CHANGED
@@ -41,7 +41,7 @@ module Ruby2JS
|
|
41
41
|
# before:
|
42
42
|
# (class (const nil :Foo) (const nil :Vue) nil)
|
43
43
|
# after:
|
44
|
-
# (casgn nil :Foo, (send nil, :Vue, :component, (:str, "foo"),
|
44
|
+
# (casgn nil :Foo, (send nil, :Vue, :component, (:str, "foo"),
|
45
45
|
# s(:hash)))
|
46
46
|
def on_class(node)
|
47
47
|
cname, inheritance, *body = node.children
|
@@ -69,11 +69,12 @@ module Ruby2JS
|
|
69
69
|
computed = []
|
70
70
|
setters = []
|
71
71
|
options = []
|
72
|
+
el = nil
|
72
73
|
mixins = []
|
73
74
|
|
74
75
|
# insert constructor if none present
|
75
76
|
if inheritance == s(:const, nil, :Vue)
|
76
|
-
unless body.any? {|statement|
|
77
|
+
unless body.any? {|statement|
|
77
78
|
statement.type == :def and statement.children.first ==:initialize}
|
78
79
|
then
|
79
80
|
body = body.dup
|
@@ -102,12 +103,12 @@ module Ruby2JS
|
|
102
103
|
end
|
103
104
|
end
|
104
105
|
|
105
|
-
elsif
|
106
|
+
elsif
|
106
107
|
statement.type == :send and statement.children[0] == cname and
|
107
108
|
statement.children[1].to_s.end_with? '='
|
108
109
|
then
|
109
110
|
@vue_reactive << statement.updated(:send, [
|
110
|
-
s(:attr, s(:const, nil, :Vue), :util), :defineReactive, cname,
|
111
|
+
s(:attr, s(:const, nil, :Vue), :util), :defineReactive, cname,
|
111
112
|
s(:sym, statement.children[1].to_s[0..-2]),
|
112
113
|
process(statement.children[2])])
|
113
114
|
|
@@ -120,15 +121,21 @@ module Ruby2JS
|
|
120
121
|
# named values (template, props, options, mixin[s])
|
121
122
|
if statement.type == :send and statement.children.first == nil
|
122
123
|
if [:template, :props].include? statement.children[1]
|
123
|
-
hash << s(:pair, s(:sym, statement.children[1]),
|
124
|
+
hash << s(:pair, s(:sym, statement.children[1]),
|
124
125
|
statement.children[2])
|
125
126
|
|
126
|
-
elsif
|
127
|
+
elsif
|
127
128
|
statement.children[1] == :options and
|
128
129
|
statement.children[2].type == :hash
|
129
130
|
then
|
130
131
|
options += statement.children[2].children
|
131
132
|
|
133
|
+
elsif
|
134
|
+
statement.children[1] == :el and
|
135
|
+
statement.children[2].type == :str
|
136
|
+
then
|
137
|
+
el = statement.children[2]
|
138
|
+
|
132
139
|
elsif statement.children[1] == :mixin or
|
133
140
|
statement.children[1] == :mixins
|
134
141
|
then
|
@@ -182,7 +189,7 @@ module Ruby2JS
|
|
182
189
|
uninitialized = @vue_inventory[:ivar].dup
|
183
190
|
|
184
191
|
block.children.each do |child|
|
185
|
-
if child.type == :ivasgn
|
192
|
+
if child.type == :ivasgn
|
186
193
|
uninitialized.delete child.children.first
|
187
194
|
end
|
188
195
|
end
|
@@ -196,15 +203,15 @@ module Ruby2JS
|
|
196
203
|
end
|
197
204
|
|
198
205
|
pairs += uninitialized.map do |symbol|
|
199
|
-
s(:pair, s(:sym, symbol.to_s[1..-1]),
|
206
|
+
s(:pair, s(:sym, symbol.to_s[1..-1]),
|
200
207
|
s(:attr, nil, :undefined))
|
201
208
|
end
|
202
209
|
|
203
210
|
block = s(:return, s(:hash, *pairs))
|
204
211
|
else
|
205
212
|
# general case: build up a hash incrementally
|
206
|
-
block = s(:begin, s(:gvasgn, :$_,
|
207
|
-
s(:hash, *uninitialized.map {|sym|
|
213
|
+
block = s(:begin, s(:gvasgn, :$_,
|
214
|
+
s(:hash, *uninitialized.map {|sym|
|
208
215
|
s(:pair, s(:sym, sym.to_s[1..-1]),
|
209
216
|
s(:attr, nil, :undefined))})),
|
210
217
|
block, s(:return, s(:gvar, :$_)))
|
@@ -224,7 +231,7 @@ module Ruby2JS
|
|
224
231
|
@comments[pair] = @comments[statement]
|
225
232
|
if VUE_LIFECYCLE.include? method
|
226
233
|
hash << pair
|
227
|
-
elsif not statement.is_method?
|
234
|
+
elsif not statement.is_method?
|
228
235
|
computed << pair
|
229
236
|
elsif method.to_s.end_with? '='
|
230
237
|
setters << pair
|
@@ -244,7 +251,7 @@ module Ruby2JS
|
|
244
251
|
# add properties before that
|
245
252
|
unless hash.any? {|pair| pair.children[0].children[0] == :props}
|
246
253
|
unless @vue_inventory[:cvar].empty?
|
247
|
-
hash.unshift s(:pair, s(:sym, :props), s(:array,
|
254
|
+
hash.unshift s(:pair, s(:sym, :props), s(:array,
|
248
255
|
*@vue_inventory[:cvar].map {|sym| s(:str, sym.to_s[2..-1])}))
|
249
256
|
end
|
250
257
|
end
|
@@ -254,6 +261,9 @@ module Ruby2JS
|
|
254
261
|
hash.unshift s(:pair, s(:sym, :mixins), s(:array, *mixins))
|
255
262
|
end
|
256
263
|
|
264
|
+
# add el as first, if app has
|
265
|
+
hash.unshift(s(:pair, s(:sym, :el), el)) if el
|
266
|
+
|
257
267
|
# append methods to hash
|
258
268
|
unless methods.empty?
|
259
269
|
hash << s(:pair, s(:sym, :methods), s(:hash, *methods))
|
@@ -263,7 +273,7 @@ module Ruby2JS
|
|
263
273
|
|
264
274
|
# append setters to computed list
|
265
275
|
setters.each do |setter|
|
266
|
-
index = computed.find_index do |pair|
|
276
|
+
index = computed.find_index do |pair|
|
267
277
|
pair.children[0].children[0].to_s ==
|
268
278
|
setter.children[0].children[0]
|
269
279
|
end
|
@@ -291,17 +301,28 @@ module Ruby2JS
|
|
291
301
|
camel = "#{camel}-" if camel =~ /^[a-z]*$/
|
292
302
|
|
293
303
|
if inheritance == s(:const, nil, :Vue)
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
|
304
|
+
hash_keys = hash.map do |pair|
|
305
|
+
pair.children[0].children[0].to_s
|
306
|
+
end
|
307
|
+
|
308
|
+
if hash_keys.any? {|key| %w(render template).include? key}
|
309
|
+
# build component
|
310
|
+
defn = s(:casgn, nil, cname,
|
311
|
+
s(:send, s(:const, nil, :Vue), :component,
|
312
|
+
s(:str, camel), s(:hash, *hash)))
|
313
|
+
else
|
314
|
+
# build app
|
315
|
+
defn = s(:casgn, nil, cname,
|
316
|
+
s(:send, s(:const, nil, :Vue), :new,
|
317
|
+
s(:hash, *hash)))
|
318
|
+
end
|
298
319
|
else
|
299
320
|
# build mixin
|
300
321
|
defn = s(:casgn, nil, cname, s(:hash, *hash))
|
301
322
|
end
|
302
323
|
|
303
324
|
# append class methods (if any)
|
304
|
-
class_methods = body.select do |statement|
|
325
|
+
class_methods = body.select do |statement|
|
305
326
|
statement.type == :defs and statement.children[0] == s(:self)
|
306
327
|
end
|
307
328
|
|
@@ -316,7 +337,7 @@ module Ruby2JS
|
|
316
337
|
s(:block, s(:send , nil, :proc), method.children[2],
|
317
338
|
*process_all(method.children[3..-1])))
|
318
339
|
else
|
319
|
-
getter = class_methods.find do |other_method|
|
340
|
+
getter = class_methods.find do |other_method|
|
320
341
|
"#{other_method.children[1]}=" == method.children[1].to_s
|
321
342
|
end
|
322
343
|
|
@@ -335,7 +356,7 @@ module Ruby2JS
|
|
335
356
|
else
|
336
357
|
# setter only
|
337
358
|
s(:send, s(:const, nil, :Object), :defineProperty,
|
338
|
-
s(:const, nil, cname),
|
359
|
+
s(:const, nil, cname),
|
339
360
|
s(:str, method.children[1].to_s[0..-2]),
|
340
361
|
s(:hash, s(:pair, s(:sym, :enumerable), s(:true)),
|
341
362
|
s(:pair, s(:sym, :configurable), s(:true)),
|
@@ -346,7 +367,7 @@ module Ruby2JS
|
|
346
367
|
end
|
347
368
|
|
348
369
|
elsif
|
349
|
-
class_methods.any? do |other_method|
|
370
|
+
class_methods.any? do |other_method|
|
350
371
|
other_method.children[1].to_s == "#{method.children[1]}="
|
351
372
|
end
|
352
373
|
then
|
@@ -359,7 +380,7 @@ module Ruby2JS
|
|
359
380
|
s(:hash, s(:pair, s(:sym, :enumerable), s(:true)),
|
360
381
|
s(:pair, s(:sym, :configurable), s(:true)),
|
361
382
|
s(:pair, s(:sym, :get), s(:block, s(:send, nil, :proc),
|
362
|
-
method.children[2],
|
383
|
+
method.children[2],
|
363
384
|
s(:autoreturn, *process_all(method.children[3..-1]))))))
|
364
385
|
end
|
365
386
|
|
@@ -492,11 +513,11 @@ module Ruby2JS
|
|
492
513
|
left = expr.children[1]
|
493
514
|
right = expr.children[2] || s(:nil)
|
494
515
|
|
495
|
-
expr = expr.updated(nil,
|
516
|
+
expr = expr.updated(nil,
|
496
517
|
[expr.children[0], left, right])
|
497
518
|
end
|
498
519
|
|
499
|
-
hash[:class] = s(:array,
|
520
|
+
hash[:class] = s(:array,
|
500
521
|
*values.join(' ').split(' ').map {|str| s(:str, str)},
|
501
522
|
expr)
|
502
523
|
end
|
@@ -506,7 +527,7 @@ module Ruby2JS
|
|
506
527
|
hash[:class] = s(:array, expr)
|
507
528
|
end
|
508
529
|
else
|
509
|
-
hash[:class] = s(:array,
|
530
|
+
hash[:class] = s(:array,
|
510
531
|
*values.join(' ').split(' ').map {|str| s(:str, str)})
|
511
532
|
end
|
512
533
|
end
|
@@ -619,15 +640,15 @@ module Ruby2JS
|
|
619
640
|
# test if value is assignable
|
620
641
|
test = value
|
621
642
|
loop do
|
622
|
-
break unless test and test.type == :send
|
643
|
+
break unless test and test.type == :send
|
623
644
|
break unless (test.children.length == 2 and
|
624
645
|
test.children.last.instance_of? Symbol and
|
625
646
|
not [:not, :!, :*, :+, :-].include? test.children.last) or
|
626
647
|
test.children[1] == :[]
|
627
|
-
test = test.children.first
|
648
|
+
test = test.children.first
|
628
649
|
end
|
629
650
|
|
630
|
-
if value and value.type != :cvar and (not test or
|
651
|
+
if value and value.type != :cvar and (not test or
|
631
652
|
test.is_a? Symbol or [:ivar, :cvar, :self].include? test.type)
|
632
653
|
then
|
633
654
|
hash[:domProps][attr] ||= value
|
@@ -672,9 +693,9 @@ module Ruby2JS
|
|
672
693
|
|
673
694
|
# put attributes up front
|
674
695
|
unless hash.empty?
|
675
|
-
pairs = hash.to_a.map do |k1, v1|
|
696
|
+
pairs = hash.to_a.map do |k1, v1|
|
676
697
|
next if Hash === v1 and v1.empty?
|
677
|
-
s(:pair, s(:str, k1.to_s),
|
698
|
+
s(:pair, s(:str, k1.to_s),
|
678
699
|
if Parser::AST::Node === v1
|
679
700
|
v1
|
680
701
|
else
|
@@ -716,8 +737,8 @@ module Ruby2JS
|
|
716
737
|
# }())
|
717
738
|
#
|
718
739
|
@vue_apply = true
|
719
|
-
|
720
|
-
element = node.updated :send, [nil, @vue_h,
|
740
|
+
|
741
|
+
element = node.updated :send, [nil, @vue_h,
|
721
742
|
*process_all(args),
|
722
743
|
s(:send, s(:block, s(:send, nil, :proc),
|
723
744
|
s(:args, s(:shadowarg, :$_)), s(:begin,
|
@@ -768,7 +789,7 @@ module Ruby2JS
|
|
768
789
|
element = node.updated nil, [*@vue_h,
|
769
790
|
*process_all(node.children[2..-1])]
|
770
791
|
else
|
771
|
-
element = node.updated nil, [nil, @vue_h,
|
792
|
+
element = node.updated nil, [nil, @vue_h,
|
772
793
|
*process_all(node.children[2..-1])]
|
773
794
|
end
|
774
795
|
|
@@ -784,7 +805,7 @@ module Ruby2JS
|
|
784
805
|
node.children[0] == s(:const, nil, :Vue)
|
785
806
|
then
|
786
807
|
# vm methods
|
787
|
-
node.updated nil, [s(:self), "$#{node.children[1]}",
|
808
|
+
node.updated nil, [s(:self), "$#{node.children[1]}",
|
788
809
|
*process_all(node.children[2..-1])]
|
789
810
|
|
790
811
|
elsif node.children[0] and node.children[0].type == :send
|
@@ -887,12 +908,12 @@ module Ruby2JS
|
|
887
908
|
#
|
888
909
|
begin
|
889
910
|
vue_apply, @vue_apply = @vue_apply, true
|
890
|
-
|
891
|
-
element = node.updated :send, [nil, @vue_h,
|
911
|
+
|
912
|
+
element = node.updated :send, [nil, @vue_h,
|
892
913
|
*child.children[2..-1],
|
893
914
|
s(:send, s(:block, s(:send, nil, :proc),
|
894
915
|
s(:args, s(:shadowarg, :$_)), s(:begin,
|
895
|
-
s(:lvasgn, :$_, s(:array)),
|
916
|
+
s(:lvasgn, :$_, s(:array)),
|
896
917
|
process(node.children[2]),
|
897
918
|
s(:return, s(:lvar, :$_)))), :[])]
|
898
919
|
ensure
|
@@ -965,11 +986,11 @@ module Ruby2JS
|
|
965
986
|
|
966
987
|
# expand @= to @vue_self.=
|
967
988
|
def on_ivasgn(node)
|
968
|
-
return super unless @vue_self
|
989
|
+
return super unless @vue_self
|
969
990
|
if node.children.length == 1
|
970
991
|
s(:attr, @vue_self, "#{node.children[0].to_s[1..-1]}")
|
971
992
|
else
|
972
|
-
s(:send, @vue_self, "#{node.children[0].to_s[1..-1]}=",
|
993
|
+
s(:send, @vue_self, "#{node.children[0].to_s[1..-1]}=",
|
973
994
|
process(node.children[1]))
|
974
995
|
end
|
975
996
|
end
|
@@ -979,15 +1000,15 @@ module Ruby2JS
|
|
979
1000
|
def on_op_asgn(node)
|
980
1001
|
return super unless @vue_self
|
981
1002
|
if node.children.first.type == :ivasgn
|
982
|
-
node.updated nil, [s(:attr, @vue_self,
|
1003
|
+
node.updated nil, [s(:attr, @vue_self,
|
983
1004
|
node.children[0].children[0].to_s[1..-1]),
|
984
1005
|
node.children[1], process(node.children[2])]
|
985
1006
|
|
986
|
-
elsif
|
1007
|
+
elsif
|
987
1008
|
node.children.first.type == :lvasgn and
|
988
1009
|
@vue_props.include? node.children[0].children[0]
|
989
1010
|
then
|
990
|
-
node.updated nil, [s(:attr, s(:self),
|
1011
|
+
node.updated nil, [s(:attr, s(:self),
|
991
1012
|
node.children[0].children[0]),
|
992
1013
|
node.children[1], process(node.children[2])]
|
993
1014
|
|
@@ -1007,7 +1028,7 @@ module Ruby2JS
|
|
1007
1028
|
def on_pair(node)
|
1008
1029
|
key, value = node.children
|
1009
1030
|
return super unless Parser::AST::Node === value
|
1010
|
-
return super unless value.type == :send and
|
1031
|
+
return super unless value.type == :send and
|
1011
1032
|
value.children.length == 2 and
|
1012
1033
|
value.children[0] == nil and
|
1013
1034
|
@vue_methods.include? value.children[1]
|
@@ -1022,11 +1043,11 @@ module Ruby2JS
|
|
1022
1043
|
if Parser::AST::Node === node
|
1023
1044
|
if node.type == :send
|
1024
1045
|
# wunderbar style calls
|
1025
|
-
return false if node.children[0] == nil and
|
1046
|
+
return false if node.children[0] == nil and
|
1026
1047
|
node.children[1].to_s.start_with? '_'
|
1027
1048
|
|
1028
1049
|
# Vue.createElement calls
|
1029
|
-
return false if node.children[0] == s(:const, nil, :Vue) and
|
1050
|
+
return false if node.children[0] == s(:const, nil, :Vue) and
|
1030
1051
|
node.children[1] == :createElement
|
1031
1052
|
end
|
1032
1053
|
|
data/lib/ruby2js/version.rb
CHANGED
data/lib/ruby2js.rb
CHANGED
@@ -14,6 +14,25 @@ module Ruby2JS
|
|
14
14
|
class SyntaxError < RuntimeError
|
15
15
|
end
|
16
16
|
|
17
|
+
@@eslevel_default = 2009 # ecmascript 5
|
18
|
+
@@strict_default = false
|
19
|
+
|
20
|
+
def self.eslevel_default
|
21
|
+
@@eslevel_default
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.eslevel_default=(level)
|
25
|
+
@@eslevel_default = level
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.strict_default
|
29
|
+
@@strict_default
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.strict_default=(level)
|
33
|
+
@@strict_default = level
|
34
|
+
end
|
35
|
+
|
17
36
|
module Filter
|
18
37
|
DEFAULTS = []
|
19
38
|
|
@@ -40,6 +59,18 @@ module Ruby2JS
|
|
40
59
|
@options = options
|
41
60
|
end
|
42
61
|
|
62
|
+
def es2015
|
63
|
+
@options[:eslevel] >= 2015
|
64
|
+
end
|
65
|
+
|
66
|
+
def es2016
|
67
|
+
@options[:eslevel] >= 2016
|
68
|
+
end
|
69
|
+
|
70
|
+
def es2017
|
71
|
+
@options[:eslevel] >= 2017
|
72
|
+
end
|
73
|
+
|
43
74
|
def process(node)
|
44
75
|
ast, @ast = @ast, node
|
45
76
|
replacement = super
|
@@ -54,11 +85,16 @@ module Ruby2JS
|
|
54
85
|
end
|
55
86
|
|
56
87
|
# handle all of the 'invented' ast types
|
88
|
+
def on_async(node); on_def(node); end
|
89
|
+
def on_asyncs(node); on_defs(node); end
|
57
90
|
def on_attr(node); on_send(node); end
|
58
91
|
def on_autoreturn(node); on_return(node); end
|
92
|
+
def on_await(node); on_send(node); end
|
59
93
|
def on_call(node); on_send(node); end
|
60
94
|
def on_constructor(node); on_def(node); end
|
61
95
|
def on_defp(node); on_defs(node); end
|
96
|
+
def on_for_of(node); on_for(node); end
|
97
|
+
def on_in?(node); on_send(node); end
|
62
98
|
def on_method(node); on_send(node); end
|
63
99
|
def on_prop(node); on_array(node); end
|
64
100
|
def on_prototype(node); on_begin(node); end
|
@@ -88,6 +124,9 @@ module Ruby2JS
|
|
88
124
|
end
|
89
125
|
|
90
126
|
def self.convert(source, options={})
|
127
|
+
options[:eslevel] ||= @@eslevel_default
|
128
|
+
options[:strict] = @@strict_default if options[:strict] == nil
|
129
|
+
|
91
130
|
if Proc === source
|
92
131
|
file,line = source.source_location
|
93
132
|
source = File.read(file.dup.untaint).untaint
|
@@ -119,6 +158,8 @@ module Ruby2JS
|
|
119
158
|
|
120
159
|
ruby2js.binding = options[:binding]
|
121
160
|
ruby2js.ivars = options[:ivars]
|
161
|
+
ruby2js.eslevel = options[:eslevel]
|
162
|
+
ruby2js.strict = options[:strict]
|
122
163
|
if ruby2js.binding and not ruby2js.ivars
|
123
164
|
ruby2js.ivars = ruby2js.binding.eval \
|
124
165
|
'Hash[instance_variables.map {|var| [var, instance_variable_get(var)]}]'
|
data/ruby2js.gemspec
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
lib = File.expand_path('../lib/', __FILE__)
|
3
3
|
$:.unshift lib unless $:.include?(lib)
|
4
|
+
require 'ruby2js/version'
|
4
5
|
|
5
6
|
Gem::Specification.new do |s|
|
6
7
|
s.name = "ruby2js".freeze
|
@@ -12,7 +13,8 @@ Gem::Specification.new do |s|
|
|
12
13
|
s.date = "2017-11-13"
|
13
14
|
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".freeze
|
14
15
|
s.email = "rubys@intertwingly.net".freeze
|
15
|
-
s.files =
|
16
|
+
s.files = %w(ruby2js.gemspec README.md) + Dir.glob("{lib}/**/*")
|
17
|
+
|
16
18
|
s.homepage = "http://github.com/rubys/ruby2js".freeze
|
17
19
|
s.licenses = ["MIT".freeze]
|
18
20
|
s.required_ruby_version = Gem::Requirement.new(">= 1.9.3".freeze)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby2js
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 3.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sam Ruby
|
@@ -48,6 +48,7 @@ files:
|
|
48
48
|
- lib/ruby2js/converter/case.rb
|
49
49
|
- lib/ruby2js/converter/casgn.rb
|
50
50
|
- lib/ruby2js/converter/class.rb
|
51
|
+
- lib/ruby2js/converter/class2.rb
|
51
52
|
- lib/ruby2js/converter/const.rb
|
52
53
|
- lib/ruby2js/converter/cvar.rb
|
53
54
|
- lib/ruby2js/converter/cvasgn.rb
|
@@ -85,10 +86,13 @@ files:
|
|
85
86
|
- lib/ruby2js/converter/while.rb
|
86
87
|
- lib/ruby2js/converter/whilepost.rb
|
87
88
|
- lib/ruby2js/converter/xstr.rb
|
89
|
+
- lib/ruby2js/es2015.rb
|
90
|
+
- lib/ruby2js/es2015/strict.rb
|
91
|
+
- lib/ruby2js/es2016.rb
|
92
|
+
- lib/ruby2js/es2016/strict.rb
|
93
|
+
- lib/ruby2js/es2017.rb
|
94
|
+
- lib/ruby2js/es2017/strict.rb
|
88
95
|
- lib/ruby2js/execjs.rb
|
89
|
-
- lib/ruby2js/filter/angular-resource.rb
|
90
|
-
- lib/ruby2js/filter/angular-route.rb
|
91
|
-
- lib/ruby2js/filter/angularrb.rb
|
92
96
|
- lib/ruby2js/filter/camelCase.rb
|
93
97
|
- lib/ruby2js/filter/functions.rb
|
94
98
|
- lib/ruby2js/filter/jquery.rb
|
@@ -97,13 +101,13 @@ files:
|
|
97
101
|
- lib/ruby2js/filter/require.rb
|
98
102
|
- lib/ruby2js/filter/return.rb
|
99
103
|
- lib/ruby2js/filter/rubyjs.rb
|
100
|
-
- lib/ruby2js/filter/strict.rb
|
101
104
|
- lib/ruby2js/filter/underscore.rb
|
102
105
|
- lib/ruby2js/filter/vue.rb
|
103
106
|
- lib/ruby2js/haml.rb
|
104
107
|
- lib/ruby2js/rails.rb
|
105
108
|
- lib/ruby2js/serializer.rb
|
106
109
|
- lib/ruby2js/sinatra.rb
|
110
|
+
- lib/ruby2js/strict.rb
|
107
111
|
- lib/ruby2js/version.rb
|
108
112
|
- ruby2js.gemspec
|
109
113
|
homepage: http://github.com/rubys/ruby2js
|
@@ -126,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
126
130
|
version: '0'
|
127
131
|
requirements: []
|
128
132
|
rubyforge_project:
|
129
|
-
rubygems_version: 2.6.
|
133
|
+
rubygems_version: 2.6.14
|
130
134
|
signing_key:
|
131
135
|
specification_version: 4
|
132
136
|
summary: Minimal yet extensible Ruby to JavaScript conversion.
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'ruby2js/filter/angularrb'
|
2
|
-
|
3
|
-
module Ruby2JS
|
4
|
-
module Filter
|
5
|
-
module AngularResource
|
6
|
-
include SEXP
|
7
|
-
|
8
|
-
# input:
|
9
|
-
# $resource.new(args)
|
10
|
-
#
|
11
|
-
# output:
|
12
|
-
# $resource(args)
|
13
|
-
|
14
|
-
def on_send(node)
|
15
|
-
return super unless @ngApp and node.children[1] == :new
|
16
|
-
return super unless node.children[0] == s(:gvar, :$resource)
|
17
|
-
node = super(node)
|
18
|
-
@ngAppUses << :ngResource
|
19
|
-
node.updated nil, [nil, :$resource, *node.children[2..-1]]
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
DEFAULTS.push AngularResource
|
24
|
-
end
|
25
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'ruby2js/filter/angularrb'
|
2
|
-
|
3
|
-
module Ruby2JS
|
4
|
-
module Filter
|
5
|
-
module AngularRoute
|
6
|
-
include SEXP
|
7
|
-
|
8
|
-
# input:
|
9
|
-
# case $routeProvider
|
10
|
-
# when '/path'
|
11
|
-
# templateUrl = 'partials/path.html'
|
12
|
-
# else
|
13
|
-
# redirectTo '/path'
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
# output:
|
17
|
-
# AppName.config(["$routeProvider", function($routeProvider) {
|
18
|
-
# $routeProvider.when("/path", {templateUrl: 'partials/path.html'}).
|
19
|
-
# otherwise({redirectTo: "/path"}))
|
20
|
-
|
21
|
-
def on_case(node)
|
22
|
-
rp = :$routeProvider
|
23
|
-
return super unless @ngApp and node.children.first == s(:gvar, rp)
|
24
|
-
@ngAppUses << :ngRoute
|
25
|
-
code = s(:lvar, rp)
|
26
|
-
|
27
|
-
node.children[1..-2].each do |child|
|
28
|
-
code = s(:sendw, code, :when, child.children.first,
|
29
|
-
AngularRB.hash(child.children[1..-1]))
|
30
|
-
end
|
31
|
-
|
32
|
-
if node.children.last
|
33
|
-
code = s(:sendw, code, :otherwise,
|
34
|
-
AngularRB.hash(node.children[-1..-1]))
|
35
|
-
end
|
36
|
-
|
37
|
-
s(:send, @ngApp, :config, s(:array, s(:str, rp.to_s), s(:block,
|
38
|
-
s(:send, nil, :proc), s(:args, s(:arg, rp)), code)))
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
DEFAULTS.push AngularRoute
|
43
|
-
end
|
44
|
-
end
|