alki-dsl 0.3.1 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3049970503a496913ddb6c325f05bb6e5638c21d
4
- data.tar.gz: 7bff335255be597d9e219dad99789b1e604c80ec
3
+ metadata.gz: e1b8f9d06b3c6f0de4627b59fa94beead6482a7c
4
+ data.tar.gz: 92e044024e188fe0a75e7d3b7e541d4743a6c389
5
5
  SHA512:
6
- metadata.gz: 91efd70a0d47d70481dd0db89c59a4d287710a84aeee5df9fb441e5823fb2083c4bd818376d25fe102b5b313918214d2dfe89c98b12c0606b0465586c2f33dac
7
- data.tar.gz: 197bb68fa144226dccb6d9a6463570f5a37f64861702d484862f7c67ba561b39a96e6e5dd18e6a54849e1f6430a399e50874f65789f9b74c2ff5a17ddada82ae
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.3'
20
+ spec.add_dependency 'alki-support', '~> 0.6'
21
21
  spec.add_development_dependency 'minitest', '~> 5.9', '>= 5.9.1'
22
22
  end
@@ -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 = Module.new
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 = Class.new super_class
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 |(p,default)|
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 :define_method, default_method do
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[1] ? "#{p[0]}=nil" : p[0]}.join(', ')})
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,default=nil,opts={})
63
- (class_builder(opts[:subclass])[:initialize_params]||=[]) << [name.to_sym,default]
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
@@ -1,5 +1,5 @@
1
1
  module Alki
2
2
  module Dsl
3
- VERSION = '0.3.1'
3
+ VERSION = '0.3.3'
4
4
  end
5
- end
5
+ end
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.1
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-03 00:00:00.000000000 Z
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.3'
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.3'
26
+ version: '0.6'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement