classy_filter 0.1.1 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7d39815c9e5cc38bad174755097ce7e62140800e77123b509ffcc0d9194cade0
4
- data.tar.gz: bffc8a05381de967fd6b051025431413c639820988f71b364f0a7af240516fa1
3
+ metadata.gz: 546def1a115de7d3c012d1471db7d8a7d6f2278eab9dd5bb917f1c7481cf3646
4
+ data.tar.gz: c42952c3f71a45996b2e6d54907dccde999c08d3eb40d3dda9f3d4f4083c1d70
5
5
  SHA512:
6
- metadata.gz: 4ecdba44e99129941af52a39b8cb2d11c3917ed427a060c0372292e502a3324a046ea13d4d96a56ffcb9bc7211a0184d8d16d457c2bb1a06bc71aca9114c24ee
7
- data.tar.gz: 45473de6711f8e184a051c74c437394f9905bb5a3c3c6797e776dbbb69ffe83a265f25d49db3f5126c89f53ce1b6d30fd8574c649a71e1f176857b4b3cd08b47
6
+ metadata.gz: 3549f4db166046684a5d233aa37bfae6fa370d3bfdf97b1b8bfe537aedf946523d9be77a06cce191e610837099af48cbda13043dc40b59c4323c7032e277d3c5
7
+ data.tar.gz: c3693176d6874d317bc972fb0f3161fda326afc82e20e1e54e6f2d5b607816965d1682e7b9c94b86a095d057fd2a2ee55df27f64cc918c7baf3d2834eb2c6179
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- classy_filter (0.1.1)
4
+ classy_filter (0.1.2)
5
5
  sequel (~> 5.0)
6
6
 
7
7
  GEM
@@ -27,7 +27,7 @@ GEM
27
27
  diff-lcs (>= 1.2.0, < 2.0)
28
28
  rspec-support (~> 3.7.0)
29
29
  rspec-support (3.7.1)
30
- sequel (5.9.0)
30
+ sequel (5.15.0)
31
31
  sqlite3 (1.3.13)
32
32
 
33
33
  PLATFORMS
@@ -42,4 +42,4 @@ DEPENDENCIES
42
42
  sqlite3 (~> 1.0)
43
43
 
44
44
  BUNDLED WITH
45
- 1.16.1
45
+ 1.16.5
@@ -15,15 +15,20 @@ module ClassyFilter
15
15
 
16
16
  def coercion(name, body)
17
17
  coercions_module.define_method(name, &body)
18
- coercions_module.private(name)
18
+ coercions_module.send(:private, name)
19
19
  end
20
20
 
21
- def predicates_module
22
- @predicates_module || ClassyFilter::Predicates
23
- end
21
+ modules = {
22
+ predicates: ClassyFilter::Predicates,
23
+ coercions: ClassyFilter::Coercions
24
+ }.freeze
24
25
 
25
- def coercions_module
26
- @coercions_module || ClassyFilter::Coercions
26
+ modules.each do |name, default|
27
+ define_method(:"#{name}_module") do |&block|
28
+ (instance_variable_get(:"@_#{name}") || default).tap do |mod|
29
+ mod.instance_eval(&block) if block
30
+ end
31
+ end
27
32
  end
28
33
 
29
34
  protected
@@ -35,10 +40,18 @@ module ClassyFilter
35
40
  end
36
41
  end
37
42
 
43
+ def build_coercions_module!(base)
44
+ @coercions_module = Module.new do
45
+ extend base.coercions_module
46
+ extend self
47
+ end
48
+ end
49
+
38
50
  private
39
51
 
40
52
  def inherited(subclass)
41
53
  subclass.build_predicates_module!(self)
54
+ subclass.build_coercions_module!(self)
42
55
  end
43
56
  end
44
57
  end
@@ -1,3 +1,3 @@
1
1
  module ClassyFilter
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: classy_filter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artemiy Solopov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-01 00:00:00.000000000 Z
11
+ date: 2018-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel