shape_of 1.0.0 → 2.0.1
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/shape_of.rb +37 -8
- 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: 64fc24c8d36d335c6052f39457aac2f62dd4155538e57dda11c78e080748bac7
|
4
|
+
data.tar.gz: ff28778300c41c9352a83da9d6ae2b95c75150dd5429abfd5e3a90c0dd1397e5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0725a89f09c62099a96287fdc2c14080d004de6f1682e9cf09cefc6ed7300e535cfb7d375f7e913d8ccd22b5f2b23b52da8072aa85dbfe2cca3dc7d6480672b5
|
7
|
+
data.tar.gz: e285973c38a51f6fcbb662e82322ea9bcb291388617849e0b86bdfd0e44cf2c4007ae456f5259fffef63f80d178c3f94016b49fa4ef2096c4d39a2e7992ae84d
|
data/lib/shape_of.rb
CHANGED
@@ -89,11 +89,11 @@ module ShapeOf
|
|
89
89
|
module Assertions
|
90
90
|
def assert_shape_of(object, shape)
|
91
91
|
if shape.respond_to? :shape_of?
|
92
|
-
|
92
|
+
assert_operator shape, :shape_of?, object
|
93
93
|
elsif shape.instance_of? ::Array
|
94
|
-
|
94
|
+
assert_operator Array[shape.first], :shape_of?, object
|
95
95
|
elsif shape.instance_of? ::Hash
|
96
|
-
|
96
|
+
assert_operator Hash[shape], :shape_of?, object
|
97
97
|
else
|
98
98
|
raise TypeError, "Expected #{Shape.inspect}, an #{::Array.inspect}, or a #{::Hash.inspect} as the shape"
|
99
99
|
end
|
@@ -101,11 +101,11 @@ module ShapeOf
|
|
101
101
|
|
102
102
|
def refute_shape_of(object, shape)
|
103
103
|
if shape.respond_to? :shape_of?
|
104
|
-
|
104
|
+
refute_operator shape, :shape_of?, object
|
105
105
|
elsif shape.instance_of? ::Array
|
106
|
-
|
106
|
+
refute_operator Array[shape.first], :shape_of?, object
|
107
107
|
elsif shape.instance_of? ::Hash
|
108
|
-
|
108
|
+
refute_operator Hash[shape], :shape_of?, object
|
109
109
|
else
|
110
110
|
raise TypeError, "Expected #{Shape.inspect}, an #{::Array.inspect}, or a #{::Hash.inspect} as the shape"
|
111
111
|
end
|
@@ -161,7 +161,7 @@ module ShapeOf
|
|
161
161
|
if @shape.respond_to? :shape_of?
|
162
162
|
@shape.shape_of? elem
|
163
163
|
elsif @shape.is_a? ::Array
|
164
|
-
Array[@shape].shape_of? elem
|
164
|
+
Array[@shape.first].shape_of? elem
|
165
165
|
elsif @shape.is_a? ::Hash
|
166
166
|
Hash[@shape].shape_of? elem
|
167
167
|
elsif @shape.is_a? Class
|
@@ -222,7 +222,7 @@ module ShapeOf
|
|
222
222
|
if @shape[key].respond_to? :shape_of?
|
223
223
|
@shape[key].shape_of? elem
|
224
224
|
elsif @shape[key].is_a? ::Array
|
225
|
-
Array[@shape[key]].shape_of? elem
|
225
|
+
Array[@shape[key].first].shape_of? elem
|
226
226
|
elsif @shape[key].is_a? ::Hash
|
227
227
|
Hash[@shape[key]].shape_of? elem
|
228
228
|
elsif @shape[key].is_a? Class
|
@@ -316,6 +316,35 @@ module ShapeOf
|
|
316
316
|
end
|
317
317
|
end
|
318
318
|
|
319
|
+
class Pattern < Shape
|
320
|
+
def self.[](shape)
|
321
|
+
raise TypeError, "Shape must be #{Regexp.inspect}, was #{shape.inspect}" unless shape.instance_of? Regexp
|
322
|
+
|
323
|
+
Class.new(self) do
|
324
|
+
@class_name = "#{superclass.name}[#{shape.inspect}]"
|
325
|
+
@shape = shape
|
326
|
+
|
327
|
+
def self.name
|
328
|
+
@class_name
|
329
|
+
end
|
330
|
+
|
331
|
+
def self.to_s
|
332
|
+
@class_name
|
333
|
+
end
|
334
|
+
|
335
|
+
def self.inspect
|
336
|
+
@class_name
|
337
|
+
end
|
338
|
+
|
339
|
+
def self.shape_of?(object)
|
340
|
+
raise TypeError, "expected #{String.inspect}, was instead #{object.inspect}" unless object.instance_of?(String)
|
341
|
+
|
342
|
+
@shape.match?(object)
|
343
|
+
end
|
344
|
+
end
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
319
348
|
Numeric = Union[Integer, Float, Rational, Complex].tap do |this|
|
320
349
|
this.instance_variable_set(:@class_name, this.name.sub(/Union.*/, 'Numeric'))
|
321
350
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: shape_of
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Isom
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-05-
|
11
|
+
date: 2021-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|