delorean_lang 0.1.01 → 0.1.02

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: