chickpea 0.2.1 → 0.2.2

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
  SHA256:
3
- metadata.gz: f57bec3d3f55c1041f65ce22af210c6e332f8053b1a49fc6fa63f742e70cd114
4
- data.tar.gz: 4d2321b65720691345c2cfb9a1c80e49e9ef9dff8904d2e45a2995bfaaac3acc
3
+ metadata.gz: 4509dd8cdae9700fb1d5a9a4acc8d3e2a477f36ffe8a2991c1c769c9f55b8bc0
4
+ data.tar.gz: 04c8943007a9f158b0d6d1f95a53b3f97d51300f4b08834bb0bb49983ab23224
5
5
  SHA512:
6
- metadata.gz: 1e25b877d61f535e68aafbbfc7f6d2db09a14abc07a67d8a6a9461020b4c370beeb4a23808a1aa4d2538f3a4684f5686bf718d8a9b5b8d3189188c1ba0d69778
7
- data.tar.gz: c339809b3c7d0ec9a5f8933788c7ed9f642454e8fd7a2905b1f43a7c1e5df9ea5330f815845c0039298f74ef8c41972188504353ec0b2c8816bc8430a05493ac
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.map do |key, val|
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
- val.tap do |v|
20
- case v
21
- when true, false
22
- klass.define_method(:"#{key}?") { obj }
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
- klass.define_method(key) { obj }
54
+ Chickpea.def_accessors(klass, key, obj)
43
55
  end
44
56
 
45
57
  klass.define_method(:to_h) do
@@ -1,3 +1,3 @@
1
1
  module Chickpea
2
- VERSION = '0.2.1'.freeze
2
+ VERSION = '0.2.2'.freeze
3
3
  end
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.1
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-04-22 00:00:00.000000000 Z
11
+ date: 2019-05-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: benchmark-ips