delorean_lang 0.2.2 → 0.2.3

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,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