constrain 0.3.3 → 0.4.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: 04e9db24a4fdaf9e637bbebb861344d3e63b9a4f2e6923f05cf69387459470de
4
- data.tar.gz: fd26404b3458bb5fd8fb63b5cb73e83bce681a9920f6aee70ed7b2f86ea9275d
3
+ metadata.gz: c76b91e6d73a1c5d2f7c44fc98f372f5b911c08e6a6d4203a3be646019aaa1a3
4
+ data.tar.gz: da85fb71b85da4e54913cb227a162c901ef3fe88c61d091e3489a63a3a97a9e5
5
5
  SHA512:
6
- metadata.gz: cfda3b10415cb633b4c6aecb9819984d4ead39490e3acf2bb6e727b6f87e44c9b4f16fbcd48c6538c9167366b6b0eccf900a9bca4eeb399c07759a73e706b223
7
- data.tar.gz: f297b0b6c61ea48c94c314c204a4d9904e0b744fb6fb00fbe9523af93a2c61a31b985ac0b408d3b02c13c9c382c6afb5fb9353bdd03d3a9d4875ee0368c383d4
6
+ metadata.gz: 3db8dbbb8a0b2eb8d0c8de705b85533a630748f9e02c4e82f324c8f705d9f01d251b4d9b9866d977b71aaef4beb29f1834f1ff058728055ef545d77ece25a506
7
+ data.tar.gz: 52a2ec74e4709506d7be7813b48d5a7ece977dc7314d591db5830033f2e477cab39d2dc26129e7d0d27727f57966b0c0957faf5ba701ef9f6754ca16123f342a
@@ -1,3 +1,3 @@
1
1
  module Constrain
2
- VERSION = "0.3.3"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/constrain.rb CHANGED
@@ -1,11 +1,8 @@
1
1
  require "constrain/version"
2
2
 
3
3
  module Constrain
4
- # Raised on any error
5
- class Error < StandardError; end
6
-
7
4
  # Raised if types doesn't match a class expression
8
- class MatchError < Error
5
+ class MatchError < StandardError
9
6
  def initialize(value, exprs, msg = nil, unwind: 0)
10
7
  super msg || "Expected #{value.inspect} to match #{Constrain.fmt_exprs(exprs)}"
11
8
  end
@@ -31,7 +28,7 @@ module Constrain
31
28
  # constrain(value, *values, unwind: 0)
32
29
  #
33
30
  # Check that value matches one of the class expressions. Raises a
34
- # Constrain::Error if the expression is invalid and a Constrain::MatchError if
31
+ # Constrain::ArgumentError if the expression is invalid and a Constrain::MatchError if
35
32
  # the value doesn't match. The exception's backtrace skips :unwind number of
36
33
  # entries
37
34
  def self.constrain(value, *exprs)
@@ -39,7 +36,7 @@ module Constrain
39
36
  end
40
37
 
41
38
  # Return true if the value matches the class expression. Raises a
42
- # Constrain::Error if the expression is invalid
39
+ # Constrain::ArgumentError if the expression is invalid
43
40
  def self.constrain?(value, *exprs)
44
41
  do_constrain?(value, *exprs)
45
42
  end
@@ -65,10 +62,10 @@ module Constrain
65
62
  msg = exprs.pop if exprs.last.is_a?(String)
66
63
 
67
64
  begin
68
- !exprs.empty? or raise Error, "Empty constraint"
65
+ !exprs.empty? or raise ArgumentError, "Empty constraint"
69
66
  exprs.any? { |expr| Constrain.do_constrain_value?(value, expr) } or
70
67
  raise MatchError.new(value, exprs, msg, unwind: unwind)
71
- rescue Error => ex
68
+ rescue ArgumentError, Constrain::MatchError => ex
72
69
  ex.set_backtrace(caller[1 + unwind..-1])
73
70
  raise
74
71
  end
@@ -77,7 +74,7 @@ module Constrain
77
74
 
78
75
  def self.do_constrain?(value, *exprs)
79
76
  begin
80
- !exprs.empty? or raise Error, "Empty constraint"
77
+ !exprs.empty? or raise ArgumentError, "Empty constraint"
81
78
  exprs.any? { |expr| Constrain.do_constrain_value?(value, expr) }
82
79
  end
83
80
  end
@@ -87,7 +84,7 @@ module Constrain
87
84
  when Class, Module
88
85
  value.is_a?(expr)
89
86
  when Array
90
- !expr.empty? or raise Error, "Empty array in constraint"
87
+ !expr.empty? or raise ArgumentError, "Empty array in constraint"
91
88
  value.is_a?(Array) && value.all? { |elem| expr.any? { |e| Constrain.constrain?(elem, e) } }
92
89
  when Hash
93
90
  value.is_a?(Hash) && value.all? { |key, value|
@@ -117,7 +114,6 @@ module Constrain
117
114
 
118
115
  # Render a class expression as a String. Same as +expr.inspect+ except that
119
116
  # Proc objects are rendered as "Proc@<sourcefile>>:<linenumber>"
120
- #
121
117
  def self.fmt_expr(expr)
122
118
  case expr
123
119
  when Class, Module; expr.to_s
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.3.3
4
+ version: 0.4.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-01-21 00:00:00.000000000 Z
11
+ date: 2022-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simplecov