constrain 0.7.0 → 0.8.0

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: 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