delorean_lang 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- N2RjODkwNmY0M2EyNDgwNmZmZWE3YWU5ZTY1YmM0YjVjMDFmM2E3Mg==
4
+ N2JmZWI1ZDg4M2ZlMTViMjAxNWFiODhmYzkyOTJjZGZkZTRiODM5NQ==
5
5
  data.tar.gz: !binary |-
6
- YTRiZjEzOTJjMGI5MjkyYjJmZTQzZGQ1NTA0N2I0MzZmYmU4ODNlYg==
6
+ OTZlYjcxNGFhMmE4MjhlZmM4NDE3NGQ5ODBhNzc0ODk1ZWFkMWE2Mw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- YWZlMzhjOWEzZTJiNzQ0Y2E5YjBjNGJlYmY4ODU5MzcxNGUwMzdlN2ZjZWI0
10
- ZjYzYWI3M2NkNzdlY2ExYmVhNDQyZjVhNjUxY2U5NjhjMDQ2MWI0NDBlZmY5
11
- MzY4MjEyMzIyZjI1NzYzYjNhMThkNWY2ZDNlNzc4YjdlZmRmZTE=
9
+ Nzg2NjUyZTc4NmExOTI3MDUxNTBlZjg4NTEwMGFkNTIxZGM5ZDY5YjI0MWM1
10
+ ZjlmMmNiYjU5ODM3NzFlM2NmOGUxOTUyMzZiYjk3OWYxODI0ZmM3NDY3ZWEw
11
+ MjFkZTJlZTk3ODQwZjAyOWU2MzgyNzAyZGVkNmZjYmFkOTAwNzQ=
12
12
  data.tar.gz: !binary |-
13
- OGEzNmQ5NzQyNDkyYjIyNDI4ZjJiZmQwZDRmMmNkMjkwYTI3ZTUwMDdjZWNk
14
- MjA3NzZjZTgwZWI5MmU3Y2I1NzQ3YTJkYjZmZTBkM2E4NzYwNGE1NzA0ZWVm
15
- MTM0NWRhYzIzMGIxYTU4YzBkZTNiMzhiMGE4ZjNkOWM4NzcwM2U=
13
+ NmM1NWFiMTAzNjczNmYxOGNhZjQ3Y2Y5YThhN2M4ZDY3YmE4NGFjODc3NWQz
14
+ ZjdkZDBlNWEzOWJiMTk3NjQxZjBkNDMxMWVmNGY1NDFiNmQ2MDhkNDBmZTE4
15
+ ODI2MjA4NDZmYmFjYjU3NDdkYjI2MjI1NjBhZTVmZjZiMzg1NTg=
@@ -68,7 +68,9 @@ module Delorean
68
68
  module BaseModule
69
69
  class NodeCall < Struct.new(:_e, :engine, :node, :params)
70
70
  def evaluate(attr)
71
- engine.evaluate(node, attr, params)
71
+ # FIXME: evaluate() modifies params! => need to clone it.
72
+ # This is pretty awful.
73
+ engine.evaluate(node, attr, params.clone)
72
74
  end
73
75
 
74
76
  def %(args)
@@ -147,6 +149,9 @@ module Delorean
147
149
  def self._node_call(node, _e, params)
148
150
  context = _e[:_engine]
149
151
 
152
+ # a node call is being called with amended args
153
+ return node + params if node.is_a?(NodeCall)
154
+
150
155
  engine = node.is_a?(Class) &&
151
156
  context.module_name != node.module_name ?
152
157
  context.get_import_engine(node.module_name) : context
@@ -1,3 +1,3 @@
1
1
  module Delorean
2
- VERSION = "0.2.2"
2
+ VERSION = "0.2.3"
3
3
  end
@@ -586,13 +586,26 @@ eof
586
586
  engine.parse defn("A:",
587
587
  " a =?",
588
588
  " aa = a*2",
589
- " e = A(a=12)",
590
- " d = e+{'a':3}",
591
- " f = e+{'a':4}",
589
+ " c = A(a=12)",
590
+ " d = c+{'a':3}",
591
+ " f = c+{'a':4}",
592
592
  " g = d.aa + f.aa",
593
+ " h = c(a=5).aa",
594
+ " j = d(a=6).aa",
593
595
  )
594
596
 
595
- engine.evaluate("A", "g").should == 3*2 + 4*2
597
+ engine.evaluate_attrs("A", ["g", "h", "j"]).should ==
598
+ [3*2 + 4*2, 5*2, 6*2]
599
+ end
600
+
601
+ it "should be able to amend node calls 2" do
602
+ engine.parse defn("A:",
603
+ " a =?",
604
+ " d = A(a=3)",
605
+ " e = [d.a, d(a=4).a]",
606
+ )
607
+
608
+ engine.evaluate_attrs("A", ["e"]).should == [[3,4]]
596
609
  end
597
610
 
598
611
  it "should eval module calls 1" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delorean_lang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arman Bostani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-03 00:00:00.000000000 Z
11
+ date: 2014-04-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: treetop