delorean_lang 0.2.4 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/delorean/engine.rb +21 -18
- data/lib/delorean/version.rb +1 -1
- data/spec/eval_spec.rb +3 -3
- data/spec/parse_spec.rb +27 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NTA5ZTg4OTNlZWQ4NWZmYTRjZWI0M2ZkYjRkZGQ4ZjM2ZmZhOWU2Yg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
NDg5MDRmMTQ0NjNiN2Q0ZGVjZmIyMjM5OTkxN2QwZjliMmI4NTQwMQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZmFjNGMwZDAxZjNhZTQ0ZTdkOWNmOTRmYTY2ZDZlY2Q0NGY3MDVlZDc2Yjlk
|
10
|
+
ZWExNWNlODIyZjJmZWFkMDRiMGMwMzU5NDBlM2UwZjYwYTMwMTgzZjFjNTk5
|
11
|
+
NmU0NzgwYTg4ODUzYWJjYWQxMTlmYTgwZTZkNGM2NzZmNmQzNTQ=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
ZDhlNzQ3MDA1NzFlYTEwMzRmZWUwNTc3MWRjY2NkYzY0MTJhOWY4MjFkMTNm
|
14
|
+
ZWUzYTQ5NTAyMWYwNDgwMTAxOTkyODg0NGFhY2Q0NWE0OGUyMTJmODYxMDk5
|
15
|
+
YzA2ZWEyMGZkYzJlY2FjOTNjNmQ1YjQyYmRjNTMwOGU2MmQ3ODM=
|
data/lib/delorean/engine.rb
CHANGED
@@ -255,34 +255,37 @@ module Delorean
|
|
255
255
|
next if line.length == 0
|
256
256
|
|
257
257
|
if multi_line
|
258
|
-
#
|
259
|
-
# continuation
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
258
|
+
# if line starts with >4 spaces, assume it's a multline
|
259
|
+
# continuation.
|
260
|
+
if line =~ /\A {5}/
|
261
|
+
multi_line += line
|
262
|
+
next
|
263
|
+
else
|
264
|
+
t = parser.parse(multi_line)
|
265
|
+
err(ParseError, "syntax error") unless t
|
264
266
|
|
265
|
-
if t
|
266
267
|
multi_line, @multi_no = nil, nil
|
267
268
|
generate(t)
|
268
269
|
end
|
270
|
+
end
|
269
271
|
|
270
|
-
|
271
|
-
t = parser.parse(line)
|
272
|
+
t = parser.parse(line)
|
272
273
|
|
273
|
-
|
274
|
-
|
274
|
+
if !t
|
275
|
+
err(ParseError, "syntax error") unless line =~ /^\s+/
|
275
276
|
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
end
|
277
|
+
multi_line = line
|
278
|
+
@multi_no = @line_no
|
279
|
+
else
|
280
|
+
generate(t)
|
281
281
|
end
|
282
282
|
end
|
283
283
|
|
284
|
-
|
285
|
-
|
284
|
+
if multi_line
|
285
|
+
t = parser.parse(multi_line)
|
286
|
+
err(ParseError, "syntax error") unless t
|
287
|
+
generate(t)
|
288
|
+
end
|
286
289
|
end
|
287
290
|
|
288
291
|
######################################################################
|
data/lib/delorean/version.rb
CHANGED
data/spec/eval_spec.rb
CHANGED
@@ -672,13 +672,13 @@ eof
|
|
672
672
|
engine.parse defn("A:",
|
673
673
|
" a = 1",
|
674
674
|
" b = [a+1",
|
675
|
-
"
|
676
|
-
"
|
675
|
+
" for a in [1,2,3]",
|
676
|
+
" ]",
|
677
677
|
)
|
678
678
|
engine.evaluate("A", "b").should == [2, 3, 4]
|
679
679
|
end
|
680
680
|
|
681
|
-
it "should eval multiline expressions" do
|
681
|
+
it "should eval multiline expressions (2)" do
|
682
682
|
engine.parse defn("A:",
|
683
683
|
" a = 123",
|
684
684
|
" b = 456 + ",
|
data/spec/parse_spec.rb
CHANGED
@@ -701,6 +701,33 @@ describe "Delorean" do
|
|
701
701
|
end
|
702
702
|
end
|
703
703
|
|
704
|
+
it "should give proper errors when multiline doesn't end properly" do
|
705
|
+
begin
|
706
|
+
engine.parse defn("A:",
|
707
|
+
" a = 1",
|
708
|
+
" b = [a+1",
|
709
|
+
" for a in [1,2,3]",
|
710
|
+
"B:",
|
711
|
+
)
|
712
|
+
raise "fail"
|
713
|
+
rescue Delorean::ParseError => exc
|
714
|
+
exc.line.should == 3
|
715
|
+
end
|
716
|
+
end
|
717
|
+
|
718
|
+
it "should error on multiline not properly spaced" do
|
719
|
+
begin
|
720
|
+
engine.parse defn("A:",
|
721
|
+
" a = [1,",
|
722
|
+
" 2]",
|
723
|
+
" b = 456",
|
724
|
+
)
|
725
|
+
raise "fail"
|
726
|
+
rescue Delorean::ParseError => exc
|
727
|
+
exc.line.should == 2
|
728
|
+
end
|
729
|
+
end
|
730
|
+
|
704
731
|
it "should parse imports" do
|
705
732
|
engine.parse defn("import AAA",
|
706
733
|
"A:",
|
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.
|
4
|
+
version: 0.3.0
|
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-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: treetop
|