ruby2js 4.2.0 → 4.2.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c55c9f73006080091da67df98c60fb8789615cf162604405223b5104f5d04f0d
4
- data.tar.gz: 50010eb8552bdf41fdcf3eba7a8f0e20bed0c1bd33916f951806426674c35147
3
+ metadata.gz: 8d723e9a782365d2969837ecd087655b127e0750884ae407282ab55986c4b8d3
4
+ data.tar.gz: 6823e27e0b0786f90a1920255a5abe20cf9850c547a0e765d25dcc87aa5ce216
5
5
  SHA512:
6
- metadata.gz: ba0d06c13ff572deb0d001ce342fb5fb92d3573356976f898693896c73960cf58f467daf3f619a1b2a04a47afb3fabc3461608d4645aaf04272031aaf9d625fb
7
- data.tar.gz: 6274e5f520764b8ccaeb711eb6910a06cdb67d62791ef73e5a6b36e369d1ea05acf0db653148fb3ad05df320002aaab92b71c6d083b3cbed5ba83f768dc840bd
6
+ metadata.gz: 5ff0eae448b2a3f671b04708b69f36a03dbe0c0d51d5b661f224b68d7acc98d0489da2de6050739e5ce59d9f298763a7b11235573e408d6d4a8dab6665dbd5e2
7
+ data.tar.gz: e7301a5e3d5ccbc970fb034123791b947490b38c1727fa0de19f4f23b5866cc354422fc2a67654f45854564a0b0c9467d1067fb5d6f3d02bdfa6a2afa167e0f7
data/demo/ruby2js.rb CHANGED
@@ -199,6 +199,8 @@ if (not defined? Wunderbar or not env['SERVER_PORT']) and not @live
199
199
  end
200
200
 
201
201
  else
202
+ require 'wunderbar'
203
+
202
204
  def walk(ast, indent='', tail='', last=true)
203
205
  return unless ast
204
206
  _div class: (ast.loc ? 'loc' : 'unloc') do
@@ -69,5 +69,19 @@ module Ruby2JS
69
69
  parse s(@ast.children[0].type, *call.children, function), @state
70
70
  end
71
71
  end
72
+
73
+ # (numblock
74
+ # (send nil :x)
75
+ # 1
76
+ # (lvar :_1))
77
+
78
+ handle :numblock do |call, count, block|
79
+ parse s(:block,
80
+ call,
81
+ s(:args, *((1..count).map {|i| s(:arg, "_#{i}")})),
82
+ block
83
+ )
84
+ end
85
+
72
86
  end
73
87
  end
@@ -162,6 +162,9 @@ module Ruby2JS
162
162
  elsif method == :to_f
163
163
  process node.updated :send, [nil, :parseFloat, target, *args]
164
164
 
165
+ elsif method == :to_json
166
+ process node.updated :send, [s(:const, nil, :JSON), :stringify, target, *args]
167
+
165
168
  elsif method == :sub and args.length == 2
166
169
  if args[1].type == :str
167
170
  args[1] = s(:str, args[1].children.first.gsub(/\\(\d)/, "$\\1"))
@@ -503,6 +506,12 @@ module Ruby2JS
503
506
  s(:regexp, s(:str, '\A\s+') , s(:regopt)), s(:str, '')])
504
507
  end
505
508
 
509
+ elsif method == :index
510
+ process node.updated(nil, [target, :indexOf, *args])
511
+
512
+ elsif method == :rindex
513
+ process node.updated(nil, [target, :lastIndexOf, *args])
514
+
506
515
  elsif method == :class and args.length==0 and not node.is_method?
507
516
  process node.updated(:attr, [target, :constructor])
508
517
 
@@ -515,6 +524,9 @@ module Ruby2JS
515
524
  elsif method == :abs and args.length == 0
516
525
  process S(:send, s(:const, nil, :Math), :abs, target)
517
526
 
527
+ elsif method == :round and args.length == 0
528
+ process S(:send, s(:const, nil, :Math), :round, target)
529
+
518
530
  elsif method == :ceil and args.length == 0
519
531
  process S(:send, s(:const, nil, :Math), :ceil, target)
520
532
 
@@ -570,6 +582,13 @@ module Ruby2JS
570
582
  process S(:send, s(:attr, target, :prototype), :[]=, args[0],
571
583
  s(:attr, s(:attr, target, :prototype), args[1].children[0]))
572
584
 
585
+ elsif method == :new and args.length == 2 and target == s(:const, nil, :Array)
586
+ if es2015
587
+ s(:send, S(:send, target, :new, args.first), :fill, args.last)
588
+ else
589
+ super
590
+ end
591
+
573
592
  else
574
593
  super
575
594
  end
@@ -616,6 +635,11 @@ module Ruby2JS
616
635
  node.updated nil, [process(call), process(node.children[1]),
617
636
  s(:autoreturn, *process_all(node.children[2..-1]))]
618
637
 
638
+ elsif method == :index and call.children.length == 2
639
+ call = call.updated nil, [call.children.first, :findIndex]
640
+ node.updated nil, [process(call), process(node.children[1]),
641
+ s(:autoreturn, *process_all(node.children[2..-1]))]
642
+
619
643
  elsif method == :map and call.children.length == 2
620
644
  node.updated nil, [process(call), process(node.children[1]),
621
645
  s(:autoreturn, *process_all(node.children[2..-1]))]
@@ -2,7 +2,7 @@ module Ruby2JS
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 4
4
4
  MINOR = 2
5
- TINY = 0
5
+ TINY = 1
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/lib/ruby2js.rb CHANGED
@@ -185,6 +185,17 @@ module Ruby2JS
185
185
  # provide a method so filters can call 'super'
186
186
  def on_sym(node); node; end
187
187
 
188
+ # convert numbered parameters block to a normal block
189
+ def on_numblock(node)
190
+ call, count, block = node.children
191
+
192
+ process s(:block,
193
+ call,
194
+ s(:args, *((1..count).map {|i| s(:arg, "_#{i}")})),
195
+ block
196
+ )
197
+ end
198
+
188
199
  # convert map(&:symbol) to a block
189
200
  def on_send(node)
190
201
  if node.children.length > 2 and node.children.last.type == :block_pass
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.2.0
4
+ version: 4.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Ruby
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-10-11 00:00:00.000000000 Z
12
+ date: 2021-11-13 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: parser