delorean_lang 0.1.03 → 0.1.04
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/delorean/container.rb +15 -9
- data/lib/delorean/engine.rb +6 -5
- data/lib/delorean/version.rb +1 -1
- data/spec/parse_spec.rb +24 -0
- metadata +2 -2
data/lib/delorean/container.rb
CHANGED
@@ -15,14 +15,6 @@ module Delorean
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def add(name, version, engine)
|
18
|
-
@engines[ [name, version] ] = engine
|
19
|
-
end
|
20
|
-
|
21
|
-
def import(name, version)
|
22
|
-
engine = get(name, version)
|
23
|
-
|
24
|
-
return engine if engine
|
25
|
-
|
26
18
|
if names.member? name
|
27
19
|
n, v = @engines.keys.detect {|n, v| n == name}
|
28
20
|
|
@@ -30,7 +22,21 @@ module Delorean
|
|
30
22
|
"Collides with imported version #{v}."
|
31
23
|
end
|
32
24
|
|
33
|
-
|
25
|
+
@engines[ [name, version] ] = engine
|
26
|
+
end
|
27
|
+
|
28
|
+
def add_imports(engine)
|
29
|
+
# Given an engine, make sure that all of its imports are added
|
30
|
+
# to the script container. This makes sure we don't have
|
31
|
+
# version conflict among different scripts.
|
32
|
+
engine.imports.each { |name, ev|
|
33
|
+
get(name, ev[1]) || add(name, ev[1], ev[0])
|
34
|
+
}
|
35
|
+
end
|
36
|
+
|
37
|
+
def import(name, version)
|
38
|
+
get(name, version) ||
|
39
|
+
add(name, version, get_engine(name, version))
|
34
40
|
end
|
35
41
|
|
36
42
|
def get_engine(name, version)
|
data/lib/delorean/engine.rb
CHANGED
@@ -36,22 +36,23 @@ module Delorean
|
|
36
36
|
name == module_name
|
37
37
|
|
38
38
|
begin
|
39
|
-
@imports[name] = sset.import(name, version)
|
39
|
+
@imports[name] = [sset.import(name, version), version]
|
40
40
|
rescue => exc
|
41
41
|
err(ImportError, exc.to_s)
|
42
42
|
end
|
43
43
|
|
44
|
-
@pm.const_set("#{MOD}#{name}", @imports[name].pm)
|
44
|
+
@pm.const_set("#{MOD}#{name}", @imports[name][0].pm)
|
45
45
|
end
|
46
46
|
|
47
47
|
def gen_import(name, version)
|
48
|
-
@imports.merge!(@imports[name].imports)
|
48
|
+
@imports.merge!(@imports[name][0].imports)
|
49
49
|
|
50
|
-
@m.const_set("#{MOD}#{name}", @imports[name].m)
|
50
|
+
@m.const_set("#{MOD}#{name}", @imports[name][0].m)
|
51
51
|
end
|
52
52
|
|
53
53
|
def get_import_engine(name)
|
54
|
-
|
54
|
+
err(ParseError, "#{name} not imported") unless @imports[name]
|
55
|
+
@imports[name][0]
|
55
56
|
end
|
56
57
|
|
57
58
|
def is_node_defined(name)
|
data/lib/delorean/version.rb
CHANGED
data/spec/parse_spec.rb
CHANGED
@@ -733,5 +733,29 @@ describe "Delorean" do
|
|
733
733
|
end
|
734
734
|
end
|
735
735
|
|
736
|
+
it "should disallow multiple versions of same script (2)" do
|
737
|
+
sset.merge({
|
738
|
+
["BBB", "0001"] =>
|
739
|
+
defn("import AAA 0001",
|
740
|
+
),
|
741
|
+
["CCC", "0001"] =>
|
742
|
+
defn("import AAA 0001",
|
743
|
+
"import BBB 0001",
|
744
|
+
),
|
745
|
+
["AAA", "0002"] =>
|
746
|
+
defn("A:",
|
747
|
+
),
|
748
|
+
["CCC", "0002"] =>
|
749
|
+
defn("import AAA 0002",
|
750
|
+
"import BBB 0001",
|
751
|
+
),
|
752
|
+
})
|
753
|
+
begin
|
754
|
+
sset.get_engine("CCC", "0002")
|
755
|
+
rescue Delorean::ImportError => exc
|
756
|
+
exc.line.should == 2
|
757
|
+
end
|
758
|
+
end
|
759
|
+
|
736
760
|
end
|
737
761
|
|
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.
|
4
|
+
version: 0.1.04
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: treetop
|