alki-dsl 0.4.0 → 0.4.2
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 +4 -4
- data/alki-dsl.gemspec +1 -1
- data/lib/alki/class_builder.rb +2 -2
- data/lib/alki/dsl.rb +5 -0
- data/lib/alki/dsl/base.rb +11 -6
- data/lib/alki/dsl/builder.rb +11 -0
- data/lib/alki/dsl/class_helpers.rb +0 -2
- data/lib/alki/dsl/evaluator.rb +3 -0
- data/lib/alki/dsl/merge.rb +26 -0
- data/lib/alki/dsl/version.rb +1 -1
- data/lib/alki/dsls/dsl.rb +9 -5
- data/test/feature/config_test.rb +5 -0
- data/test/fixtures/example/lib/alki_loader.rb +2 -1
- data/test/fixtures/example/lib/alki_test/dsls/simple.rb +9 -0
- data/test/integration/class_builder_test.rb +3 -1
- metadata +8 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz: '
|
3
|
+
metadata.gz: 4d2cf31784168eb5de6e6fd04ac4d6d7763aa16a
|
4
|
+
data.tar.gz: '0299ce32b0c21d2567c6a201696262a0442af954'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b306403e0261d49b4d4f5f16203d7599cc8468d5b1cb9cfa57e546dbc7be2f872590c4bc0d444037370d6a863b47358e1dda0027aecf7b3f532aeeb892a41feb
|
7
|
+
data.tar.gz: 525dfdbe6892594eda9330edfde6c7b77bf63ccfec42915f20fd7495d89f22dc459a5140ccc20a9566975616a75feb9a7b5bc08d49de7966ba75ebfd7d37a82a
|
data/alki-dsl.gemspec
CHANGED
@@ -18,6 +18,6 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
20
|
spec.add_dependency 'alki-support', '~> 0.7'
|
21
|
-
spec.add_dependency 'alki-loader', '~> 0.
|
21
|
+
spec.add_dependency 'alki-loader', '~> 0.2'
|
22
22
|
spec.add_development_dependency 'minitest', '~> 5.9', '>= 5.9.1'
|
23
23
|
end
|
data/lib/alki/class_builder.rb
CHANGED
@@ -85,12 +85,12 @@ module Alki
|
|
85
85
|
|
86
86
|
if data[:modules]
|
87
87
|
data[:modules].each do |mod|
|
88
|
-
klass.include mod
|
88
|
+
klass.include Alki.load mod
|
89
89
|
end
|
90
90
|
end
|
91
91
|
if data[:class_modules]
|
92
92
|
data[:class_modules].each do |mod|
|
93
|
-
klass.extend mod
|
93
|
+
klass.extend Alki.load mod
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
data/lib/alki/dsl.rb
CHANGED
data/lib/alki/dsl/base.rb
CHANGED
@@ -1,12 +1,10 @@
|
|
1
1
|
require 'alki/support'
|
2
|
-
require 'alki/dsl/
|
2
|
+
require 'alki/dsl/builder'
|
3
3
|
|
4
4
|
module Alki
|
5
5
|
module Dsl
|
6
6
|
class Base
|
7
|
-
|
8
|
-
Alki::Dsl::Evaluator.evaluate self, data, &blk
|
9
|
-
end
|
7
|
+
extend Alki::Dsl::Builder
|
10
8
|
|
11
9
|
def self.generate(ctx)
|
12
10
|
obj = new(ctx)
|
@@ -16,7 +14,6 @@ module Alki
|
|
16
14
|
result[:init] = obj.method(info[:init]) if info[:init]
|
17
15
|
result[:finish] = obj.method(info[:finish]) if info[:finish]
|
18
16
|
result[:requires] = info[:requires] if info[:requires]
|
19
|
-
result[:helpers] = info[:helpers] if info[:helpers]
|
20
17
|
|
21
18
|
if info[:methods]
|
22
19
|
info[:methods].each do |method|
|
@@ -35,6 +32,14 @@ module Alki
|
|
35
32
|
{}
|
36
33
|
end
|
37
34
|
|
35
|
+
def self.helpers
|
36
|
+
if defined? self::Helpers
|
37
|
+
[self::Helpers]
|
38
|
+
else
|
39
|
+
[]
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
38
43
|
def initialize(ctx)
|
39
44
|
@ctx = ctx
|
40
45
|
end
|
@@ -42,4 +47,4 @@ module Alki
|
|
42
47
|
attr_reader :ctx
|
43
48
|
end
|
44
49
|
end
|
45
|
-
end
|
50
|
+
end
|
@@ -48,13 +48,11 @@ module Alki
|
|
48
48
|
end
|
49
49
|
|
50
50
|
def add_helper(name,&blk)
|
51
|
-
class_builder('Helpers')[:type] = :module
|
52
51
|
add_method name, &blk
|
53
52
|
add_method name, subclass: 'Helpers', &blk
|
54
53
|
end
|
55
54
|
|
56
55
|
def add_helper_module(mod)
|
57
|
-
class_builder('Helpers')[:type] = :module
|
58
56
|
add_module mod
|
59
57
|
add_module mod, subclass: 'Helpers'
|
60
58
|
end
|
data/lib/alki/dsl/evaluator.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
require 'alki/dsl/builder'
|
2
|
+
|
3
|
+
module Alki
|
4
|
+
module Dsl
|
5
|
+
class Merge
|
6
|
+
include Alki::Dsl::Builder
|
7
|
+
|
8
|
+
def initialize(*dsls)
|
9
|
+
@dsls = dsls
|
10
|
+
@requires = dsls.map{|dsl| [dsl,:before]}.freeze
|
11
|
+
end
|
12
|
+
|
13
|
+
def generate(_ctx)
|
14
|
+
{
|
15
|
+
requires: @requires
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
def helpers
|
20
|
+
@helpers ||= @dsls.inject([]) do |helpers, dsl|
|
21
|
+
helpers.push *Alki.load(dsl).helpers
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/alki/dsl/version.rb
CHANGED
data/lib/alki/dsls/dsl.rb
CHANGED
@@ -50,11 +50,11 @@ module Alki
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def require_dsl(dsl, order=:before)
|
53
|
-
dsl_class = Alki.load
|
54
|
-
@info[:requires] << [
|
55
|
-
|
56
|
-
add_module
|
57
|
-
add_helper_module
|
53
|
+
dsl_class = Alki.load dsl
|
54
|
+
@info[:requires] << [dsl,order]
|
55
|
+
dsl_class.helpers.each do |helper|
|
56
|
+
add_module helper
|
57
|
+
add_helper_module helper
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
@@ -68,6 +68,10 @@ module Alki
|
|
68
68
|
|
69
69
|
def finish
|
70
70
|
set_super_class 'alki/dsl/base'
|
71
|
+
class_builder('Helpers')[:type] = :module
|
72
|
+
add_class_method :helpers do
|
73
|
+
[self::Helpers]
|
74
|
+
end
|
71
75
|
info = @info.freeze
|
72
76
|
add_class_method :dsl_info do
|
73
77
|
info
|
data/test/feature/config_test.rb
CHANGED
@@ -16,4 +16,9 @@ describe 'dsl configuration' do
|
|
16
16
|
require 'alki_test/numbers/three'
|
17
17
|
AlkiTest::Numbers::Three.new.must_equal 3
|
18
18
|
end
|
19
|
+
|
20
|
+
it 'should allow using Alki::Dsl.merge to merge dsls together' do
|
21
|
+
require 'alki_test/numbers/three'
|
22
|
+
AlkiTest::Numbers::Three.simple.must_equal true
|
23
|
+
end
|
19
24
|
end
|
@@ -1,2 +1,3 @@
|
|
1
|
-
Alki::
|
1
|
+
number_dsl = Alki::Dsl.merge 'alki_test/dsls/number', 'alki_test/dsls/simple'
|
2
|
+
Alki::Loader.register '../numbers', builder: number_dsl, name: 'alki_test/numbers'
|
2
3
|
Alki::Loader.register 'alki_test/dsls', builder: 'alki/dsls/dsl'
|
@@ -60,7 +60,9 @@ describe Alki::ClassBuilder do
|
|
60
60
|
|
61
61
|
it 'should allow setting super class by name' do
|
62
62
|
class AlkiTestClass; end
|
63
|
-
|
63
|
+
Alki.stub(:load,AlkiTestClass) do
|
64
|
+
build(super_class: 'alki_test_class').superclass.must_equal AlkiTestClass
|
65
|
+
end
|
64
66
|
Object.send :remove_const, :AlkiTestClass
|
65
67
|
end
|
66
68
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: alki-dsl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Edlefsen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: alki-support
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.2'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.2'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: minitest
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -72,14 +72,17 @@ files:
|
|
72
72
|
- lib/alki/class_builder.rb
|
73
73
|
- lib/alki/dsl.rb
|
74
74
|
- lib/alki/dsl/base.rb
|
75
|
+
- lib/alki/dsl/builder.rb
|
75
76
|
- lib/alki/dsl/class_helpers.rb
|
76
77
|
- lib/alki/dsl/evaluator.rb
|
78
|
+
- lib/alki/dsl/merge.rb
|
77
79
|
- lib/alki/dsl/version.rb
|
78
80
|
- lib/alki/dsls/class.rb
|
79
81
|
- lib/alki/dsls/dsl.rb
|
80
82
|
- test/feature/config_test.rb
|
81
83
|
- test/fixtures/example/lib/alki_loader.rb
|
82
84
|
- test/fixtures/example/lib/alki_test/dsls/number.rb
|
85
|
+
- test/fixtures/example/lib/alki_test/dsls/simple.rb
|
83
86
|
- test/fixtures/example/lib/alki_test/dsls/value.rb
|
84
87
|
- test/fixtures/example/numbers/three.rb
|
85
88
|
- test/integration/class_builder_test.rb
|
@@ -113,6 +116,7 @@ test_files:
|
|
113
116
|
- test/feature/config_test.rb
|
114
117
|
- test/fixtures/example/lib/alki_loader.rb
|
115
118
|
- test/fixtures/example/lib/alki_test/dsls/number.rb
|
119
|
+
- test/fixtures/example/lib/alki_test/dsls/simple.rb
|
116
120
|
- test/fixtures/example/lib/alki_test/dsls/value.rb
|
117
121
|
- test/fixtures/example/numbers/three.rb
|
118
122
|
- test/integration/class_builder_test.rb
|