constrain 0.7.0 → 0.8.0

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: e58649bbac9af8f3464dedd63c6c76e72c6f37440da629a10b5aba3319972214
4
- data.tar.gz: c82c606c419af6c2af55aaca6a57bf03d2229917241bf800d32dba8d8a6a512c
3
+ metadata.gz: 7b497524127f01a38cc3c6f4061e91e0cad65b587538d57f69b194a550d46bf1
4
+ data.tar.gz: 95cff0709eb06ab088fee635c5629de99d16f521f9d24ea0a603ddb4d0968780
5
5
  SHA512:
6
- metadata.gz: 6e0b90a537bea77af54c907ccb7fb1ea0a501623ba42c793c94ac446cfcbee615cac3d2937ec86741af883698ef3558ba4a3bc34030e3d1be68c36730e159097
7
- data.tar.gz: 3d0212bdafd1a03d9058b8ad94bc423f346ec6b36752c1dbbc11b2f3b319d77493754cb68be712ce7dc7ab02986eab1329b7fa42ec116b770a0e31517c9c7124
6
+ metadata.gz: f843d4f4b653ab255f52d9c5188b3d9d72c0170e0f4af4522404e4d993b97f6629b0b61c665a9cc47f3fc89a22ca7f7beb9efd68dfdae186c5d1502b320004d7
7
+ data.tar.gz: 70654e57d920e7f13a92394d57f7b5ddff2529ebe346507de201f47ce9aad77beef17992419dea84f1ba795b4de7d8443a65d3250b9a46298f8b1896d43dbeb4
data/TODO CHANGED
@@ -1,11 +1,15 @@
1
1
 
2
- o Allow 'constrain SomeClass < SomeOtherClass'
2
+ o Use | to create class-or expressions
3
+ o Old: Class | Class syntax
4
+ o Use & to construct tuple expressions
5
+ o Old: A tuple method: "Symbol => constrain.tuple(String, Integer)"
6
+ o Better error message for 'constrain EXPR'
7
+ o Explain that 'constrain EXPR' can be used for 'constrain SomeClass < AnotherClass'
3
8
  o Match ranges and regular expressions
4
- o A tuple method: "Symbol => constrain.tuple(String, Integer)"
5
9
  o An array and hash method: "Symbol => constrain.array(Integer), String => constrain.hash(Symbol, Integer)"
6
- o Class | Class syntax
7
10
  o Constrained attributes: constrain_reader, constrain_writer, constrain_accessor:
8
11
  o Messages should include info about the unexpected element type in arrays (and maybe more): "Expected [#<PgGraph::Data::Record:public.pings[1] {id: 1, name: 'Ping A'}>, #<PgGraph::Data::Record:public.pings[2] {id: 2, name: 'Ping B'}>, nil] to match [PgGraph::Data::Record]
9
12
 
10
13
  + constrain value, class-expr, "Error message"
11
14
  + Check against values: 'constrain arg, :one_value, :another_value, 1, 2, 3'
15
+ + Allow 'constrain EXRP'
@@ -1,3 +1,3 @@
1
1
  module Constrain
2
- VERSION = "0.7.0"
2
+ VERSION = "0.8.0"
3
3
  end
data/lib/constrain.rb CHANGED
@@ -88,7 +88,7 @@ module Constrain
88
88
  def self.do_constrain_value?(value, expr)
89
89
  case expr
90
90
  when Class, Module
91
- value.is_a?(expr)
91
+ expr === value
92
92
  when Array
93
93
  !expr.empty? or raise ArgumentError, "Empty array in constraint"
94
94
  value.is_a?(Array) && value.all? { |elem| expr.any? { |e| Constrain.constrain?(elem, e) } }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: constrain
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Claus Rasmussen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-03 00:00:00.000000000 Z
11
+ date: 2022-09-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov