eqq 0.0.1 → 0.0.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: 4bca6982f43fb57004acdca8facb594d0d178999bdcb323a41663138d9f00325
4
- data.tar.gz: 31f2e909e814925d47cf64824ac1267597fc2b85d3a4704ed9612704f6b41071
3
+ metadata.gz: fd093a7aa8c034327d463c56bfe120a8ecc48b52649ba7900491f05cc130cc38
4
+ data.tar.gz: 13f7ca2f2f40d9be41abd4408f5486b892f345347eb07eeb3f4d936c47cc92ab
5
5
  SHA512:
6
- metadata.gz: e30c7e8c661ffb9764e9c604503454e3bd29de40075f6e8296540d0b3a41a482c1221178d155e2c090b1b075ea4ec4d6f63306d5eaeba3b69e505e981abd0712
7
- data.tar.gz: '0885388e12a098f0c26415b252f0bc552c39e526df9ffbed2beffcc046ffe778eee99a71120e23e6ea80c61c1aee67b5769208196fee9d422646a6d90e4e92d4'
6
+ metadata.gz: 2e510f5313e0f890bf3c8277a413f937b0a26e2ba58e501591288556783bc5fffc944c23a1216ddf95308a111b06c6ac82557526d9f7de49ef9dbe7806f93bb6
7
+ data.tar.gz: 719905cbd2f71a388e13ca0427b7db49115513ce11395a436d8ef9fc43397c9c77cc408135862147bbfc3bac3fb36615332752f56ab28e4136bc74b8db3f97dd
data/MIT-LICENSE.txt CHANGED
@@ -7,7 +7,7 @@ of this software and associated documentation files (the "Software"), to deal
7
7
  in the Software without restriction, including without limitation the rights
8
8
  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
9
  copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
10
+ furnished to do so, subject to the following patterns:
11
11
 
12
12
  The above copyright notice and this permission notice shall be included in all
13
13
  copies or substantial portions of the Software.
data/README.md CHANGED
@@ -9,12 +9,12 @@ Pattern objects builder.
9
9
 
10
10
  ## Usage
11
11
 
12
- Require Ruby 2.5 or later
12
+ Require Ruby 2.6 or later
13
13
 
14
14
  Add below code into your Gemfile
15
15
 
16
16
  ```ruby
17
- gem 'eqq', '>= 0.0.1', '< 0.1.0'
17
+ gem 'eqq', '0.0.2'
18
18
  ```
19
19
 
20
20
  ### Overview
data/lib/eqq.rb CHANGED
@@ -2,238 +2,40 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  # Copyright (c) 2011 Kenichi Kamiya
5
- # Forked from https://github.com/kachick/eqq at 2021
5
+ # Forked from https://github.com/kachick/validation at 2021
6
6
 
7
- module Eqq
8
- def self.conditionable?(object)
9
- case object
10
- when Proc, Method
11
- object.arity == 1
12
- else
13
- begin
14
- object.respond_to?(:===)
15
- rescue NoMethodError
16
- false
17
- end
18
- end
19
- end
20
-
21
- def self.define(&block)
22
- module_exec(&block)
23
- end
24
-
25
- module_function
26
-
27
- # A condition builder.
28
- # @param condition1 [Proc, Method, #===]
29
- # @param condition2 [Proc, Method, #===]
30
- # @param conditions [Array<Proc, Method, #===>]
31
- # @return [Proc]
32
- # this lambda return true if match all conditions
33
- def AND(condition1, condition2, *conditions)
34
- ->v {
35
- [condition1, condition2, *conditions].all? { |condition| condition === v }
36
- }
37
- end
38
-
39
- # A condition builder.
40
- # @param condition1 [Proc, Method, #===]
41
- # @param condition2 [Proc, Method, #===]
42
- # @param conditions [Array<Proc, Method, #===>]
43
- # @return [Proc]
44
- def NAND(condition1, condition2, *conditions)
45
- NOT(AND(condition1, condition2, *conditions))
46
- end
47
-
48
- # A condition builder.
49
- # @param condition1 [Proc, Method, #===]
50
- # @param condition2 [Proc, Method, #===]
51
- # @param conditions [Array<Proc, Method, #===>]
52
- # @return [Proc]
53
- # this lambda return true if match a any condition
54
- def OR(condition1, condition2, *conditions)
55
- ->v {
56
- [condition1, condition2, *conditions].any? { |condition| condition === v }
57
- }
58
- end
59
-
60
- # A condition builder.
61
- # @param condition1 [Proc, Method, #===]
62
- # @param condition2 [Proc, Method, #===]
63
- # @param conditions [Array<Proc, Method, #===>]
64
- # @return [Proc]
65
- def NOR(condition1, condition2, *conditions)
66
- NOT(OR(condition1, condition2, *conditions))
67
- end
68
-
69
- # A condition builder.
70
- # @param condition1 [Proc, Method, #===]
71
- # @param condition2 [Proc, Method, #===]
72
- # @param conditions [Array<Proc, Method, #===>]
73
- # @return [Proc]
74
- def XOR(condition1, condition2, *conditions)
75
- ->v {
76
- [condition1, condition2, *conditions].one? { |condition| condition === v }
77
- }
78
- end
79
-
80
- # A condition builder.
81
- # @param condition1 [Proc, Method, #===]
82
- # @param condition2 [Proc, Method, #===]
83
- # @param conditions [Array<Proc, Method, #===>]
84
- # @return [Proc]
85
- def XNOR(condition1, condition2, *conditions)
86
- NOT(XOR(condition1, condition2, *conditions))
87
- end
88
-
89
- # A condition builder.
90
- # @param condition [Proc, Method, #===]
91
- # @return [Proc] A condition invert the original condition.
92
- def NOT(condition)
93
- unless Eqq.conditionable?(condition)
94
- raise TypeError, 'wrong object for condition'
95
- end
96
-
97
- ->v { !(condition === v) }
98
- end
99
-
100
- # A condition builder.
101
- # @param obj [#==]
102
- # @return [Proc]
103
- # this lambda return true if a argument match under #== method
104
- def EQ(obj)
105
- ->v { obj == v }
106
- end
7
+ require_relative 'eqq/buildable'
8
+ require_relative 'eqq/version'
107
9
 
108
- # A condition builder.
109
- # @param obj [#equal?]
110
- # @return [Proc]
111
- # this lambda return true if a argument match under #equal? method
112
- def SAME(obj)
113
- ->v { obj.equal?(v) }
114
- end
10
+ module Eqq
11
+ extend Buildable
115
12
 
116
- # A condition builder.
117
- # @param message1 [Symbol, String]
118
- # @param messages [Array<Symbol, String>]
119
- # @return [Proc]
120
- # this lambda return true if a argument respond to all messages
121
- def CAN(message1, *messages)
122
- messages = [message1, *messages].map(&:to_sym)
13
+ class Error < StandardError; end
14
+ class InvalidProductError < Error; end
123
15
 
124
- ->v {
125
- messages.all? { |message| v.respond_to?(message) }
126
- }
16
+ class DSLScope
17
+ include Buildable
127
18
  end
128
19
 
129
- # A condition builder.
130
- # @param condition1 [Proc, Method, #===]
131
- # @param conditions [Array<Proc, Method, #===>]
132
- # @return [Proc]
133
- # this lambda return true
134
- # if face no exception when a argument checking under all conditions
135
- def QUIET(condition1, *conditions)
136
- conditions = [condition1, *conditions]
137
- unless conditions.all? { |c| Eqq.conditionable?(c) }
138
- raise TypeError, 'wrong object for condition'
139
- end
140
-
141
- ->v {
142
- conditions.all? { |condition|
20
+ class << self
21
+ def valid?(object)
22
+ case object
23
+ when Proc, Method
24
+ object.arity == 1
25
+ else
143
26
  begin
144
- condition === v
145
- rescue Exception
27
+ object.respond_to?(:===)
28
+ rescue NoMethodError
146
29
  false
147
- else
148
- true
149
30
  end
150
- }
151
- }
152
- end
153
-
154
- # A condition builder.
155
- # @param exception [Exception]
156
- # @param exceptions [Array<Exception>]
157
- # @return [Proc]
158
- # this lambda return true
159
- # if catch any kindly exceptions when a argument checking in a block parameter
160
- def RESCUE(exception, *exceptions, &condition)
161
- exceptions = [exception, *exceptions]
162
- raise ArgumentError unless Eqq.conditionable?(condition)
163
- raise ArgumentError unless exceptions.all?(Exception)
164
-
165
- ->v {
166
- begin
167
- condition.call(v)
168
- false
169
- rescue *exceptions
170
- true
171
- rescue Exception
172
- false
173
- end
174
- }
175
- end
176
-
177
- # A condition builder.
178
- # @param exception [Exception]
179
- # @return [Proc]
180
- # this lambda return true
181
- # if catch a specific exception when a argument checking in a block parameter
182
- def CATCH(exception, &condition)
183
- raise ArgumentError unless Eqq.conditionable?(condition)
184
- raise ArgumentError unless exceptions.all?(Exception)
185
-
186
- ->v {
187
- begin
188
- condition.call(v)
189
- rescue Exception => err
190
- err.instance_of?(exception)
191
- else
192
- false
193
31
  end
194
- }
195
- end
196
-
197
- # A condition builder.
198
- # @param condition1 [Proc, Method, #===]
199
- # @param condition2 [Proc, Method, #===]
200
- # @param conditions [Array<Proc, Method, #===>]
201
- # @return [Proc]
202
- # this lambda return true
203
- # if all included objects match all conditions
204
- def ALL(condition1, condition2, *conditions)
205
- condition = Eqq.AND(condition1, condition2, *conditions)
206
-
207
- ->list {
208
- enum = (
209
- case
210
- when list.respond_to?(:each_value)
211
- list.each_value
212
- when list.respond_to?(:all?)
213
- list
214
- when list.respond_to?(:each)
215
- list.each
216
- else
217
- return false
218
- end
219
- )
220
-
221
- enum.all?(condition)
222
- }
223
- end
224
-
225
- def ANYTHING
226
- # BasicObject.=== always passing
227
- BasicObject
228
- end
32
+ end
229
33
 
230
- BOOLEAN = OR(SAME(true), SAME(false))
34
+ def define(&block)
35
+ pattern = DSLScope.new.instance_exec(&block)
36
+ raise InvalidProductError unless valid?(pattern)
231
37
 
232
- # A getter for a useful condition.
233
- # @return [BOOLEAN] "true or false"
234
- def BOOLEAN
235
- BOOLEAN
38
+ pattern
39
+ end
236
40
  end
237
41
  end
238
-
239
- require_relative 'eqq/version'
@@ -0,0 +1,172 @@
1
+ # coding: us-ascii
2
+ # frozen_string_literal: true
3
+
4
+ module Eqq
5
+ module Buildable
6
+ extend self
7
+
8
+ # @param pattern1 [Proc, Method, #===]
9
+ # @param pattern2 [Proc, Method, #===]
10
+ # @param patterns [Array<Proc, Method, #===>]
11
+ # @return [Proc]
12
+ # this lambda return true if match all patterns
13
+ def AND(pattern1, pattern2, *patterns)
14
+ ->v {
15
+ [pattern1, pattern2, *patterns].all? { |pattern| pattern === v }
16
+ }
17
+ end
18
+
19
+ # @param pattern1 [Proc, Method, #===]
20
+ # @param pattern2 [Proc, Method, #===]
21
+ # @param patterns [Array<Proc, Method, #===>]
22
+ # @return [Proc]
23
+ def NAND(pattern1, pattern2, *patterns)
24
+ NOT(AND(pattern1, pattern2, *patterns))
25
+ end
26
+
27
+ # @param pattern1 [Proc, Method, #===]
28
+ # @param pattern2 [Proc, Method, #===]
29
+ # @param patterns [Array<Proc, Method, #===>]
30
+ # @return [Proc]
31
+ # this lambda return true if match a any pattern
32
+ def OR(pattern1, pattern2, *patterns)
33
+ ->v {
34
+ [pattern1, pattern2, *patterns].any? { |pattern| pattern === v }
35
+ }
36
+ end
37
+
38
+ # @param pattern1 [Proc, Method, #===]
39
+ # @param pattern2 [Proc, Method, #===]
40
+ # @param patterns [Array<Proc, Method, #===>]
41
+ # @return [Proc]
42
+ def NOR(pattern1, pattern2, *patterns)
43
+ NOT(OR(pattern1, pattern2, *patterns))
44
+ end
45
+
46
+ # @param pattern1 [Proc, Method, #===]
47
+ # @param pattern2 [Proc, Method, #===]
48
+ # @param patterns [Array<Proc, Method, #===>]
49
+ # @return [Proc]
50
+ def XOR(pattern1, pattern2, *patterns)
51
+ ->v {
52
+ [pattern1, pattern2, *patterns].one? { |pattern| pattern === v }
53
+ }
54
+ end
55
+
56
+ # @param pattern1 [Proc, Method, #===]
57
+ # @param pattern2 [Proc, Method, #===]
58
+ # @param patterns [Array<Proc, Method, #===>]
59
+ # @return [Proc]
60
+ def XNOR(pattern1, pattern2, *patterns)
61
+ NOT(XOR(pattern1, pattern2, *patterns))
62
+ end
63
+
64
+ # @param pattern [Proc, Method, #===]
65
+ # @return [Proc]
66
+ def NOT(pattern)
67
+ raise ArgumentError, 'wrong object for pattern' unless Eqq.valid?(pattern)
68
+
69
+ ->v { !(pattern === v) }
70
+ end
71
+
72
+ # A pattern builder.
73
+ # @param obj [#==]
74
+ # @return [Proc]
75
+ def EQ(obj)
76
+ ->v { obj == v }
77
+ end
78
+
79
+ # @param obj [#equal?]
80
+ # @return [Proc]
81
+ def SAME(obj)
82
+ ->v { obj.equal?(v) }
83
+ end
84
+
85
+ # @param message1 [Symbol, String]
86
+ # @param messages [Array<Symbol, String>]
87
+ # @return [Proc]
88
+ def CAN(message1, *messages)
89
+ messages = begin
90
+ [message1, *messages].map(&:to_sym)
91
+ rescue NoMethodError
92
+ raise ArgumentError
93
+ end
94
+
95
+ ->v {
96
+ messages.all? { |message|
97
+ begin
98
+ v.respond_to?(message)
99
+ rescue NoMethodError
100
+ false
101
+ end
102
+ }
103
+ }
104
+ end
105
+
106
+ # @param pattern1 [Proc, Method, #===]
107
+ # @param patterns [Array<Proc, Method, #===>]
108
+ # @return [Proc]
109
+ def QUIET(pattern1, *patterns)
110
+ patterns = [pattern1, *patterns]
111
+ unless patterns.all? { |pattern| Eqq.valid?(pattern) }
112
+ raise ArgumentError, 'wrong object for pattern'
113
+ end
114
+
115
+ ->v {
116
+ patterns.all? { |pattern|
117
+ begin
118
+ pattern === v
119
+ rescue Exception
120
+ false
121
+ else
122
+ true
123
+ end
124
+ }
125
+ }
126
+ end
127
+
128
+ # @param mod [Module]
129
+ # @param pattern [Proc, Method, #===]
130
+ # @return [Proc]
131
+ def RESCUE(mod, pattern)
132
+ raise ArgumentError unless Eqq.valid?(pattern)
133
+ raise ArgumentError unless Module === mod
134
+
135
+ ->v {
136
+ begin
137
+ pattern === v
138
+ false
139
+ rescue mod
140
+ true
141
+ rescue Exception
142
+ false
143
+ end
144
+ }
145
+ end
146
+
147
+ # @param name [Symbol, #to_sym]
148
+ # @param pattern [Proc, Method, #===]
149
+ # @return [Proc]
150
+ def SEND(name, pattern)
151
+ raise InvalidProductError unless Eqq.valid?(pattern)
152
+
153
+ ->v {
154
+ v.__send__(name, pattern)
155
+ }
156
+ end
157
+
158
+ # @return [BasicObject]
159
+ def ANYTHING
160
+ # BasicObject.=== always passing
161
+ BasicObject
162
+ end
163
+
164
+ BOOLEAN = OR(SAME(true), SAME(false))
165
+ private_constant :BOOLEAN
166
+
167
+ # @return [BOOLEAN]
168
+ def BOOLEAN
169
+ BOOLEAN
170
+ end
171
+ end
172
+ end
data/lib/eqq/version.rb CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module Eqq
5
- VERSION = '0.0.1'
5
+ VERSION = '0.0.2'
6
6
  end
data/sig/eqq.rbs ADDED
@@ -0,0 +1,49 @@
1
+ module Eqq
2
+ interface _Patternable
3
+ def ===: (untyped object) -> bool
4
+ end
5
+
6
+ interface _ToSym
7
+ def to_sym: -> Symbol
8
+ end
9
+
10
+ module Buildable
11
+ # A pribate constant. Should not be used in your code.
12
+ BOOLEAN: ^(untyped object) -> bool
13
+
14
+ extend Buildable
15
+ def OR: (_Patternable, _Patternable, *_Patternable) -> ^(untyped object) -> bool
16
+ def AND: (_Patternable, _Patternable, *_Patternable) -> ^(untyped object) -> bool
17
+ def NAND: (_Patternable, _Patternable, *_Patternable) -> ^(untyped object) -> bool
18
+ def NOR: (_Patternable, _Patternable, *_Patternable) -> ^(untyped object) -> bool
19
+ def XOR: (_Patternable, _Patternable, *_Patternable) -> ^(untyped object) -> bool
20
+ def XNOR: (_Patternable, _Patternable, *_Patternable) -> ^(untyped object) -> bool
21
+ def NOT: (_Patternable) -> ^(untyped object) -> bool
22
+ def EQ: (untyped object) -> ^(untyped object) -> bool
23
+ def SAME: (untyped object) -> ^(untyped object) -> bool
24
+ def CAN: (_ToSym, *_ToSym) -> ^(untyped object) -> bool
25
+ def RESCUE: (Module, _Patternable) -> ^(untyped object) -> bool
26
+ def QUIET: (_Patternable, *_Patternable) -> ^(untyped object) -> bool
27
+ def SEND: (Symbol | String name, _Patternable) -> ^(untyped object) -> bool
28
+ def ANYTHING: () -> BasicObject
29
+ def BOOLEAN: () -> ^(untyped object) -> bool
30
+ end
31
+
32
+ extend Buildable
33
+
34
+ class Error < StandardError
35
+ end
36
+
37
+ class InvalidProductError < Error
38
+ end
39
+
40
+ # A pribate API. Should not be used in your code.
41
+ class DSLScope
42
+ include Buildable
43
+ end
44
+
45
+ VERSION: String
46
+
47
+ def self.valid?: (untyped object) -> bool
48
+ def self.define: { () -> _Patternable } -> _Patternable
49
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: eqq
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenichi Kamiya
@@ -9,221 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2021-06-01 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: test-unit
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 3.4.1
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '4.0'
23
- type: :development
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 3.4.1
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '4.0'
33
- - !ruby/object:Gem::Dependency
34
- name: irb
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: 1.3.5
40
- - - "<"
41
- - !ruby/object:Gem::Version
42
- version: '2.0'
43
- type: :development
44
- prerelease: false
45
- version_requirements: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: 1.3.5
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: '2.0'
53
- - !ruby/object:Gem::Dependency
54
- name: irb-power_assert
55
- requirement: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - '='
58
- - !ruby/object:Gem::Version
59
- version: 0.0.2
60
- type: :development
61
- prerelease: false
62
- version_requirements: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - '='
65
- - !ruby/object:Gem::Version
66
- version: 0.0.2
67
- - !ruby/object:Gem::Dependency
68
- name: warning
69
- requirement: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - ">="
72
- - !ruby/object:Gem::Version
73
- version: 1.2.0
74
- - - "<"
75
- - !ruby/object:Gem::Version
76
- version: '2.0'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: 1.2.0
84
- - - "<"
85
- - !ruby/object:Gem::Version
86
- version: '2.0'
87
- - !ruby/object:Gem::Dependency
88
- name: rake
89
- requirement: !ruby/object:Gem::Requirement
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- version: 13.0.3
94
- - - "<"
95
- - !ruby/object:Gem::Version
96
- version: '20.0'
97
- type: :development
98
- prerelease: false
99
- version_requirements: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: 13.0.3
104
- - - "<"
105
- - !ruby/object:Gem::Version
106
- version: '20.0'
107
- - !ruby/object:Gem::Dependency
108
- name: yard
109
- requirement: !ruby/object:Gem::Requirement
110
- requirements:
111
- - - ">="
112
- - !ruby/object:Gem::Version
113
- version: 0.9.26
114
- - - "<"
115
- - !ruby/object:Gem::Version
116
- version: '2'
117
- type: :development
118
- prerelease: false
119
- version_requirements: !ruby/object:Gem::Requirement
120
- requirements:
121
- - - ">="
122
- - !ruby/object:Gem::Version
123
- version: 0.9.26
124
- - - "<"
125
- - !ruby/object:Gem::Version
126
- version: '2'
127
- - !ruby/object:Gem::Dependency
128
- name: rubocop
129
- requirement: !ruby/object:Gem::Requirement
130
- requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- version: 1.15.0
134
- - - "<"
135
- - !ruby/object:Gem::Version
136
- version: 1.16.0
137
- type: :development
138
- prerelease: false
139
- version_requirements: !ruby/object:Gem::Requirement
140
- requirements:
141
- - - ">="
142
- - !ruby/object:Gem::Version
143
- version: 1.15.0
144
- - - "<"
145
- - !ruby/object:Gem::Version
146
- version: 1.16.0
147
- - !ruby/object:Gem::Dependency
148
- name: rubocop-rake
149
- requirement: !ruby/object:Gem::Requirement
150
- requirements:
151
- - - ">="
152
- - !ruby/object:Gem::Version
153
- version: 0.5.1
154
- - - "<"
155
- - !ruby/object:Gem::Version
156
- version: 0.6.0
157
- type: :development
158
- prerelease: false
159
- version_requirements: !ruby/object:Gem::Requirement
160
- requirements:
161
- - - ">="
162
- - !ruby/object:Gem::Version
163
- version: 0.5.1
164
- - - "<"
165
- - !ruby/object:Gem::Version
166
- version: 0.6.0
167
- - !ruby/object:Gem::Dependency
168
- name: rubocop-performance
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - ">="
172
- - !ruby/object:Gem::Version
173
- version: 1.11.3
174
- - - "<"
175
- - !ruby/object:Gem::Version
176
- version: 1.12.0
177
- type: :development
178
- prerelease: false
179
- version_requirements: !ruby/object:Gem::Requirement
180
- requirements:
181
- - - ">="
182
- - !ruby/object:Gem::Version
183
- version: 1.11.3
184
- - - "<"
185
- - !ruby/object:Gem::Version
186
- version: 1.12.0
187
- - !ruby/object:Gem::Dependency
188
- name: rubocop-rubycw
189
- requirement: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - ">="
192
- - !ruby/object:Gem::Version
193
- version: 0.1.6
194
- - - "<"
195
- - !ruby/object:Gem::Version
196
- version: 0.2.0
197
- type: :development
198
- prerelease: false
199
- version_requirements: !ruby/object:Gem::Requirement
200
- requirements:
201
- - - ">="
202
- - !ruby/object:Gem::Version
203
- version: 0.1.6
204
- - - "<"
205
- - !ruby/object:Gem::Version
206
- version: 0.2.0
207
- - !ruby/object:Gem::Dependency
208
- name: rubocop-md
209
- requirement: !ruby/object:Gem::Requirement
210
- requirements:
211
- - - ">="
212
- - !ruby/object:Gem::Version
213
- version: 1.0.1
214
- - - "<"
215
- - !ruby/object:Gem::Version
216
- version: 2.0.0
217
- type: :development
218
- prerelease: false
219
- version_requirements: !ruby/object:Gem::Requirement
220
- requirements:
221
- - - ">="
222
- - !ruby/object:Gem::Version
223
- version: 1.0.1
224
- - - "<"
225
- - !ruby/object:Gem::Version
226
- version: 2.0.0
12
+ dependencies: []
227
13
  description: " [4.2, 42, 42.0, 420].grep(Eqq.AND(Integer, 20..50)) #=> [42]\n"
228
14
  email:
229
15
  - kachick1+ruby@gmail.com
@@ -234,7 +20,9 @@ files:
234
20
  - MIT-LICENSE.txt
235
21
  - README.md
236
22
  - lib/eqq.rb
23
+ - lib/eqq/buildable.rb
237
24
  - lib/eqq/version.rb
25
+ - sig/eqq.rbs
238
26
  homepage: https://github.com/kachick/eqq
239
27
  licenses:
240
28
  - MIT
@@ -251,7 +39,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
251
39
  requirements:
252
40
  - - ">="
253
41
  - !ruby/object:Gem::Version
254
- version: 2.5.0
42
+ version: 2.6.0
255
43
  required_rubygems_version: !ruby/object:Gem::Requirement
256
44
  requirements:
257
45
  - - ">="