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 +8 -8
- data/lib/delorean/base.rb +6 -1
- data/lib/delorean/version.rb +1 -1
- data/spec/eval_spec.rb +17 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
N2JmZWI1ZDg4M2ZlMTViMjAxNWFiODhmYzkyOTJjZGZkZTRiODM5NQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTZlYjcxNGFhMmE4MjhlZmM4NDE3NGQ5ODBhNzc0ODk1ZWFkMWE2Mw==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
Nzg2NjUyZTc4NmExOTI3MDUxNTBlZjg4NTEwMGFkNTIxZGM5ZDY5YjI0MWM1
|
10
|
+
ZjlmMmNiYjU5ODM3NzFlM2NmOGUxOTUyMzZiYjk3OWYxODI0ZmM3NDY3ZWEw
|
11
|
+
MjFkZTJlZTk3ODQwZjAyOWU2MzgyNzAyZGVkNmZjYmFkOTAwNzQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NmM1NWFiMTAzNjczNmYxOGNhZjQ3Y2Y5YThhN2M4ZDY3YmE4NGFjODc3NWQz
|
14
|
+
ZjdkZDBlNWEzOWJiMTk3NjQxZjBkNDMxMWVmNGY1NDFiNmQ2MDhkNDBmZTE4
|
15
|
+
ODI2MjA4NDZmYmFjYjU3NDdkYjI2MjI1NjBhZTVmZjZiMzg1NTg=
|
data/lib/delorean/base.rb
CHANGED
@@ -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
|
-
|
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
|
data/lib/delorean/version.rb
CHANGED
data/spec/eval_spec.rb
CHANGED
@@ -586,13 +586,26 @@ eof
|
|
586
586
|
engine.parse defn("A:",
|
587
587
|
" a =?",
|
588
588
|
" aa = a*2",
|
589
|
-
"
|
590
|
-
" d =
|
591
|
-
" f =
|
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.
|
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.
|
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-
|
11
|
+
date: 2014-04-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: treetop
|