delorean_lang 0.1.01 → 0.1.02

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.
@@ -2463,7 +2463,12 @@ module Delorean
2463
2463
  end
2464
2464
  s9 << r13
2465
2465
  if r13
2466
- r15 = _nt_kw_args
2466
+ r16 = _nt_kw_args
2467
+ if r16
2468
+ r15 = r16
2469
+ else
2470
+ r15 = instantiate_node(SyntaxNode,input, index...index)
2471
+ end
2467
2472
  s9 << r15
2468
2473
  end
2469
2474
  end
@@ -108,7 +108,7 @@ grammar Delorean
108
108
  end
109
109
 
110
110
  rule kw_args
111
- k:(i:identifier ':' sp?)? arg0:expression args_rest:(sp? ',' sp? al:kw_args)? <KwArgs>
111
+ k:(i:identifier ':' sp?)? arg0:expression args_rest:(sp? ',' sp? al:kw_args?)? <KwArgs>
112
112
  end
113
113
 
114
114
  rule number
@@ -297,10 +297,6 @@ eos
297
297
  end
298
298
 
299
299
  def rewrite(context, node_name)
300
- do_rewrite(context, node_name)
301
- end
302
-
303
- def do_rewrite(context, node_name, mname="nil")
304
300
  args, kw = al.text_value.empty? ? [[], {}] : al.rewrite(context)
305
301
 
306
302
  raise "No positional arguments to node call" unless
@@ -308,7 +304,7 @@ eos
308
304
 
309
305
  kw_str = '{' + kw.map {|k, v| "'#{k}' => #{v}" }.join(',') + '}'
310
306
 
311
- "_node_call(#{node_name}, #{mname}, _e, #{kw_str})"
307
+ "_node_call(#{node_name}, nil, _e, #{kw_str})"
312
308
  end
313
309
  end
314
310
 
@@ -394,8 +390,7 @@ eos
394
390
  context.parse_define_var(i.text_value)
395
391
  res += ".select{|#{i.rewrite(context)}| (#{ifexp.e3.rewrite(context)}) }" if
396
392
  defined?(ifexp.e3)
397
- res += ".map{"
398
- res += "|#{i.rewrite(context)}| (#{e2.rewrite(context)}) }"
393
+ res += ".map{|#{i.rewrite(context)}| (#{e2.rewrite(context)}) }"
399
394
  context.parse_undef_var(i.text_value)
400
395
  res
401
396
  end
@@ -427,8 +422,7 @@ eos
427
422
  iw = i.rewrite(context)
428
423
  res += ".select{|#{iw}| (#{ifexp.ei.rewrite(context)}) }" if
429
424
  defined?(ifexp.ei)
430
- res += ".inject({}){"
431
- res += "|_h#{iw}, #{iw}| "+
425
+ res += ".inject({}){|_h#{iw}, #{iw}| " +
432
426
  "_h#{iw}[#{el.rewrite(context)}]=(#{er.rewrite(context)}); _h#{iw}}"
433
427
  context.parse_undef_var(i.text_value)
434
428
  res
@@ -454,7 +448,7 @@ eos
454
448
  def rewrite(context)
455
449
  arg0_rw = arg0.rewrite(context)
456
450
 
457
- if defined?(args_rest.al)
451
+ if defined?(args_rest.al) && !args_rest.al.text_value.empty?
458
452
  args, kw = args_rest.al.rewrite(context)
459
453
  else
460
454
  args, kw = [], {}
@@ -1,3 +1,3 @@
1
1
  module Delorean
2
- VERSION = "0.1.01"
2
+ VERSION = "0.1.02"
3
3
  end
@@ -635,7 +635,9 @@ describe "Delorean" do
635
635
  " b = 456 + a",
636
636
  " n = 'A'",
637
637
  " c = nil(x: 123, y: 456)",
638
- " d = n(x: 123, y: 456)",
638
+ " d = n(x: 123,",
639
+ " y: 456,",
640
+ " )",
639
641
  )
640
642
  end
641
643
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delorean_lang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.01
4
+ version: 0.1.02
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: