alki-dsl 0.3.1 → 0.3.3
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 +26 -9
- data/lib/alki/dsl/class_helpers.rb +5 -3
- data/lib/alki/dsl/version.rb +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1b8f9d06b3c6f0de4627b59fa94beead6482a7c
|
4
|
+
data.tar.gz: 92e044024e188fe0a75e7d3b7e541d4743a6c389
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 92d22cccaab64a4432d63705cda0adb15dfacb322b869d3232e479c09a3300a306be90b7579942c70cada82106aadfa369ceb61be2287f0922ed19d08abbf8e7
|
7
|
+
data.tar.gz: 820e2ffe299fccaf70047e771bcedf993a4fb9dcefa39a92224d6c401b347f022e13e2bbb74552f4b7f9b1a9ec6c372dda9c2210c576853ee7c37311c914b26a
|
data/alki-dsl.gemspec
CHANGED
@@ -17,6 +17,6 @@ Gem::Specification.new do |spec|
|
|
17
17
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
|
-
spec.add_dependency 'alki-support', '~> 0.
|
20
|
+
spec.add_dependency 'alki-support', '~> 0.6'
|
21
21
|
spec.add_development_dependency 'minitest', '~> 5.9', '>= 5.9.1'
|
22
22
|
end
|
data/lib/alki/class_builder.rb
CHANGED
@@ -24,18 +24,36 @@ module Alki
|
|
24
24
|
)
|
25
25
|
end
|
26
26
|
|
27
|
+
klass = Alki::Support.constantize class_name, data[:parent_class] if class_name
|
28
|
+
must_create = !klass
|
29
|
+
|
27
30
|
if data[:type] == :module
|
28
|
-
klass
|
31
|
+
if klass
|
32
|
+
if klass.class != Module
|
33
|
+
raise "#{class_name} already exists as is a #{klass.class}"
|
34
|
+
end
|
35
|
+
else
|
36
|
+
klass = Module.new
|
37
|
+
end
|
29
38
|
else
|
39
|
+
if klass && klass.class != Class
|
40
|
+
raise "#{class_name} already exists as is a #{klass.class}"
|
41
|
+
end
|
30
42
|
super_class = if data[:super_class]
|
31
43
|
Alki::Support.load_class data[:super_class]
|
32
44
|
else
|
33
45
|
Object
|
34
46
|
end
|
35
|
-
klass
|
47
|
+
if klass
|
48
|
+
if klass.superclass != super_class
|
49
|
+
raise "#{class_name} already exists with different super class"
|
50
|
+
end
|
51
|
+
else
|
52
|
+
klass = Class.new super_class
|
53
|
+
end
|
36
54
|
end
|
37
55
|
build_class data, klass
|
38
|
-
if class_name
|
56
|
+
if class_name && must_create
|
39
57
|
create_constant class_name, klass, data[:parent_class]
|
40
58
|
end
|
41
59
|
if data[:secondary_classes]
|
@@ -111,12 +129,11 @@ module Alki
|
|
111
129
|
|
112
130
|
def self.add_initialize(klass,params)
|
113
131
|
at_setters = ''
|
114
|
-
params.each do |
|
132
|
+
params.each do |p|
|
133
|
+
p,default = p.is_a?(Array) ? p : [p,nil]
|
115
134
|
if default
|
116
135
|
default_method = "_default_#{p}".to_sym
|
117
|
-
klass.send
|
118
|
-
default
|
119
|
-
end
|
136
|
+
klass.send(:define_method, default_method, &default)
|
120
137
|
klass.send :private, default_method
|
121
138
|
at_setters << "@#{p} = #{p} || #{default_method}\n"
|
122
139
|
else
|
@@ -125,8 +142,8 @@ module Alki
|
|
125
142
|
end
|
126
143
|
|
127
144
|
klass.class_eval "
|
128
|
-
def initialize(#{params.map{|p| p
|
145
|
+
def initialize(#{params.map{|p| p.is_a?(Array) ? "#{p[0]}=nil" : p.to_s}.join(', ')})
|
129
146
|
#{at_setters}end"
|
130
147
|
end
|
131
148
|
end
|
132
|
-
end
|
149
|
+
end
|
@@ -59,8 +59,10 @@ module Alki
|
|
59
59
|
add_module mod, subclass: 'Helpers'
|
60
60
|
end
|
61
61
|
|
62
|
-
def add_initialize_param(name,
|
63
|
-
|
62
|
+
def add_initialize_param(name,opts={},&default)
|
63
|
+
name = name.to_sym
|
64
|
+
param = default ? [name,default] : name
|
65
|
+
(class_builder(opts[:subclass])[:initialize_params]||=[]) << param
|
64
66
|
end
|
65
67
|
|
66
68
|
def add_instance_class_proxy(type, name,subclass: nil)
|
@@ -83,4 +85,4 @@ module Alki
|
|
83
85
|
end
|
84
86
|
end
|
85
87
|
end
|
86
|
-
end
|
88
|
+
end
|
data/lib/alki/dsl/version.rb
CHANGED
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.3.
|
4
|
+
version: 0.3.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Edlefsen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-12-
|
11
|
+
date: 2016-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: alki-support
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
19
|
+
version: '0.6'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '0.
|
26
|
+
version: '0.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|