chickpea 0.2.1 → 0.2.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/lib/chickpea.rb +34 -22
- data/lib/chickpea/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4509dd8cdae9700fb1d5a9a4acc8d3e2a477f36ffe8a2991c1c769c9f55b8bc0
|
4
|
+
data.tar.gz: 04c8943007a9f158b0d6d1f95a53b3f97d51300f4b08834bb0bb49983ab23224
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c347485043f48cf46b078699b1a5b3a9f541cebab10359f93c3e585ac525df3f01288fb7cbed36fbfd526e0c85c38a1011ce58b640286f7815c2a316165d8670
|
7
|
+
data.tar.gz: a48ede609a8693edc025787e0a5b7ed2fee1502f4c6d9afae533923c91549f98df675b2282a470e327f35fbc5ae31a5dfb284783fffae73842e7337a287c1c62
|
data/lib/chickpea.rb
CHANGED
@@ -8,38 +8,50 @@ module Chickpea
|
|
8
8
|
end
|
9
9
|
|
10
10
|
class<<self
|
11
|
+
def def_accessors(klass, key, nv)
|
12
|
+
(
|
13
|
+
case nv
|
14
|
+
when true, false
|
15
|
+
[[:"#{key}?", -> { nv }]]
|
16
|
+
else
|
17
|
+
[]
|
18
|
+
end + [[:"#{key}", -> { nv }]]
|
19
|
+
).each do |(meth, block)|
|
20
|
+
klass.define_method(meth, &block)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def check_type(obj, nv)
|
25
|
+
case obj
|
26
|
+
when true, false
|
27
|
+
unless nv == true || nv == false
|
28
|
+
raise(TypeError.new(nv, :Boolean))
|
29
|
+
end
|
30
|
+
else
|
31
|
+
unless nv.is_a?(obj.class)
|
32
|
+
raise(TypeError.new(nv, obj.class.name))
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
11
37
|
def make_stash(hash)
|
12
38
|
klass = Class.new
|
13
39
|
|
14
|
-
hash.
|
40
|
+
hash.each do |key, val|
|
15
41
|
obj =
|
16
42
|
if val.is_a?(Hash)
|
17
43
|
make_stash(val)
|
18
44
|
else
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
klass.define_method(:"#{key}=") do |nv|
|
24
|
-
unless nv == true || nv == false
|
25
|
-
raise(TypeError.new(nv, :Boolean))
|
26
|
-
end
|
27
|
-
|
28
|
-
define_singleton_method(key) { nv }
|
29
|
-
end
|
30
|
-
else
|
31
|
-
klass.define_method(:"#{key}=") do |nv|
|
32
|
-
unless nv.is_a?(obj.class)
|
33
|
-
raise(TypeError.new(nv, obj.class.name))
|
34
|
-
end
|
35
|
-
|
36
|
-
define_singleton_method(key) { nv }
|
37
|
-
end
|
38
|
-
end
|
45
|
+
klass.define_method(:"#{key}=") do |nv|
|
46
|
+
Chickpea.check_type(val, nv)
|
47
|
+
|
48
|
+
Chickpea.def_accessors(klass, key, nv)
|
39
49
|
end
|
50
|
+
|
51
|
+
val
|
40
52
|
end
|
41
53
|
|
42
|
-
|
54
|
+
Chickpea.def_accessors(klass, key, obj)
|
43
55
|
end
|
44
56
|
|
45
57
|
klass.define_method(:to_h) do
|
data/lib/chickpea/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chickpea
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stone Tickle
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: benchmark-ips
|