delorean_lang 0.1.03 → 0.1.04
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.
- 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
|