sanatio 0.3.0 → 0.4.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 +4 -4
- data/.travis.yml +1 -0
- data/README.md +82 -0
- data/lib/sanatio/built-in/greater_than.rb +4 -14
- data/lib/sanatio/built-in/greater_than_or_equal_to.rb +4 -14
- data/lib/sanatio/built-in/less_than.rb +4 -14
- data/lib/sanatio/built-in/less_than_or_equal_to.rb +4 -14
- data/lib/sanatio/built-in/matching.rb +26 -0
- data/lib/sanatio/built-in/one_of.rb +25 -0
- data/lib/sanatio/built-in/support/compare.rb +22 -0
- data/lib/sanatio/built-in/valid.rb +17 -0
- data/lib/sanatio/built-in.rb +3 -0
- data/lib/sanatio/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bd128dbe87fa8e5eedada9ea84cd2c2ecaa1fbf0
|
4
|
+
data.tar.gz: 12d18969cdb230afa2c0a7f69d2232261ba7c253
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 934d064743bdd8381f0d950757867d1bf015062a113dfe7b855901a36ffdffc275c445960101f351aa79bd93209dd323521d46a6474aecc7896cc564ace2ab0a
|
7
|
+
data.tar.gz: 1593525b215691eafce260a7be7c966ad8ec346661b72ffac86d714b6bc62151b54bedc0371f3397b8f9e04a209a01ef0c6f9fe7e7148768bc8f9486b432c771
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Sanatio
|
2
2
|
|
3
3
|

|
4
|
+
[](http://badge.fury.io/rb/sanatio)
|
5
|
+
[](https://codeclimate.com/github/ThijsWouters/sanatio)
|
4
6
|
|
5
7
|
Sanatio is a gem that does validation. It has no external dependencies.
|
6
8
|
|
@@ -205,6 +207,86 @@ Person.new(15).valid? #true
|
|
205
207
|
Person.new(19).valid? #false
|
206
208
|
```
|
207
209
|
|
210
|
+
#### OneOf
|
211
|
+
|
212
|
+
This validation fails when the value is not in the list given.
|
213
|
+
|
214
|
+
```ruby
|
215
|
+
class Person
|
216
|
+
include Sanatio
|
217
|
+
|
218
|
+
def initialize(name)
|
219
|
+
@name = name
|
220
|
+
end
|
221
|
+
|
222
|
+
attr_reader :name
|
223
|
+
|
224
|
+
ensure_that(:name).is OneOf, 'Santa', 'Easter Bunny'
|
225
|
+
end
|
226
|
+
|
227
|
+
Person.new(nil).valid? #false
|
228
|
+
Person.new("Test Testington").valid? #false
|
229
|
+
Person.new("Easter Bunny").valid? #true
|
230
|
+
Person.new("Santa").valid? #true
|
231
|
+
```
|
232
|
+
|
233
|
+
#### Valid
|
234
|
+
|
235
|
+
This validation fails when the value is not valid.
|
236
|
+
|
237
|
+
```ruby
|
238
|
+
class Address
|
239
|
+
include Sanatio
|
240
|
+
|
241
|
+
def initialize(street)
|
242
|
+
@street = street
|
243
|
+
end
|
244
|
+
|
245
|
+
attr_reader :street
|
246
|
+
|
247
|
+
ensure_that(:street).is Present
|
248
|
+
end
|
249
|
+
|
250
|
+
class Person
|
251
|
+
include Sanatio
|
252
|
+
|
253
|
+
def initialize(address)
|
254
|
+
@address = address
|
255
|
+
end
|
256
|
+
|
257
|
+
attr_reader :address
|
258
|
+
|
259
|
+
ensure_that(:address).is Valid
|
260
|
+
end
|
261
|
+
|
262
|
+
Person.new(Address.new('Alleystreet')).valid? #true
|
263
|
+
Person.new(Address.new(nil)).valid? #false
|
264
|
+
Person.new(Address.new(nil)).errors #[Error.new(:field => :address, :reason => :invalid)]
|
265
|
+
```
|
266
|
+
|
267
|
+
#### Matching
|
268
|
+
|
269
|
+
This validation fails when the value does not match the provided regex.
|
270
|
+
|
271
|
+
```ruby
|
272
|
+
class Person
|
273
|
+
include Sanatio
|
274
|
+
|
275
|
+
def initialize(name)
|
276
|
+
@name = name
|
277
|
+
end
|
278
|
+
|
279
|
+
attr_reader :name
|
280
|
+
|
281
|
+
ensure_that(:name).is Matching, /Test/
|
282
|
+
end
|
283
|
+
|
284
|
+
Person.new(nil).valid? #false
|
285
|
+
Person.new("Test Testington").valid? #true
|
286
|
+
Person.new("DoesNotMatch").valid? #false
|
287
|
+
Person.new("DoesNotMatch").errors #[Error.new(:field => :name, :reason => :no_match)]
|
288
|
+
```
|
289
|
+
|
208
290
|
## Development
|
209
291
|
|
210
292
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `bin/console` for an interactive prompt that will allow you to experiment.
|
@@ -1,25 +1,15 @@
|
|
1
|
+
require 'sanatio/built-in/support/compare'
|
2
|
+
|
1
3
|
module Sanatio
|
2
4
|
module BuiltIn
|
3
|
-
class GreaterThan
|
5
|
+
class GreaterThan < Compare
|
4
6
|
def initialize(value)
|
5
|
-
|
6
|
-
end
|
7
|
-
|
8
|
-
def skip?(object)
|
9
|
-
!object.respond_to?(:>)
|
10
|
-
end
|
11
|
-
|
12
|
-
def valid?(object)
|
13
|
-
object > @value
|
7
|
+
super(value, :>)
|
14
8
|
end
|
15
9
|
|
16
10
|
def reason
|
17
11
|
:less_than_or_equal_to
|
18
12
|
end
|
19
|
-
|
20
|
-
def params
|
21
|
-
[@value]
|
22
|
-
end
|
23
13
|
end
|
24
14
|
end
|
25
15
|
end
|
@@ -1,25 +1,15 @@
|
|
1
|
+
require 'sanatio/built-in/support/compare'
|
2
|
+
|
1
3
|
module Sanatio
|
2
4
|
module BuiltIn
|
3
|
-
class GreaterThanOrEqualTo
|
5
|
+
class GreaterThanOrEqualTo < Compare
|
4
6
|
def initialize(value)
|
5
|
-
|
6
|
-
end
|
7
|
-
|
8
|
-
def skip?(object)
|
9
|
-
!object.respond_to?(:>=)
|
10
|
-
end
|
11
|
-
|
12
|
-
def valid?(object)
|
13
|
-
object >= @value
|
7
|
+
super(value, :>=)
|
14
8
|
end
|
15
9
|
|
16
10
|
def reason
|
17
11
|
:less_than
|
18
12
|
end
|
19
|
-
|
20
|
-
def params
|
21
|
-
[@value]
|
22
|
-
end
|
23
13
|
end
|
24
14
|
end
|
25
15
|
end
|
@@ -1,25 +1,15 @@
|
|
1
|
+
require 'sanatio/built-in/support/compare'
|
2
|
+
|
1
3
|
module Sanatio
|
2
4
|
module BuiltIn
|
3
|
-
class LessThan
|
5
|
+
class LessThan < Compare
|
4
6
|
def initialize(value)
|
5
|
-
|
6
|
-
end
|
7
|
-
|
8
|
-
def skip?(object)
|
9
|
-
!object.respond_to?(:<)
|
10
|
-
end
|
11
|
-
|
12
|
-
def valid?(object)
|
13
|
-
object < @value
|
7
|
+
super(value, :<)
|
14
8
|
end
|
15
9
|
|
16
10
|
def reason
|
17
11
|
:greater_than_or_equal_to
|
18
12
|
end
|
19
|
-
|
20
|
-
def params
|
21
|
-
[@value]
|
22
|
-
end
|
23
13
|
end
|
24
14
|
end
|
25
15
|
end
|
@@ -1,25 +1,15 @@
|
|
1
|
+
require 'sanatio/built-in/support/compare'
|
2
|
+
|
1
3
|
module Sanatio
|
2
4
|
module BuiltIn
|
3
|
-
class LessThanOrEqualTo
|
5
|
+
class LessThanOrEqualTo < Compare
|
4
6
|
def initialize(value)
|
5
|
-
|
6
|
-
end
|
7
|
-
|
8
|
-
def skip?(object)
|
9
|
-
!object.respond_to?(:<=)
|
10
|
-
end
|
11
|
-
|
12
|
-
def valid?(object)
|
13
|
-
object <= @value
|
7
|
+
super(value, :<=)
|
14
8
|
end
|
15
9
|
|
16
10
|
def reason
|
17
11
|
:greater_than
|
18
12
|
end
|
19
|
-
|
20
|
-
def params
|
21
|
-
[@value]
|
22
|
-
end
|
23
13
|
end
|
24
14
|
end
|
25
15
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Sanatio
|
2
|
+
module BuiltIn
|
3
|
+
class Matching
|
4
|
+
def initialize(regex)
|
5
|
+
@regex = regex
|
6
|
+
end
|
7
|
+
|
8
|
+
def skip?(value)
|
9
|
+
!value.respond_to?(:to_str)
|
10
|
+
end
|
11
|
+
|
12
|
+
def valid?(value)
|
13
|
+
@regex.match(value)
|
14
|
+
end
|
15
|
+
|
16
|
+
def reason
|
17
|
+
:no_match
|
18
|
+
end
|
19
|
+
|
20
|
+
def params
|
21
|
+
[@regex]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'sanatio/skippable'
|
2
|
+
|
3
|
+
module Sanatio
|
4
|
+
module BuiltIn
|
5
|
+
class OneOf
|
6
|
+
include Skippable
|
7
|
+
|
8
|
+
def initialize(*values)
|
9
|
+
@values = values
|
10
|
+
end
|
11
|
+
|
12
|
+
def valid?(object)
|
13
|
+
@values.include?(object)
|
14
|
+
end
|
15
|
+
|
16
|
+
def reason
|
17
|
+
:not_one_of
|
18
|
+
end
|
19
|
+
|
20
|
+
def params
|
21
|
+
@values
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Sanatio
|
2
|
+
module BuiltIn
|
3
|
+
class Compare
|
4
|
+
def initialize(value, method)
|
5
|
+
@value = value
|
6
|
+
@method = method
|
7
|
+
end
|
8
|
+
|
9
|
+
def params
|
10
|
+
[@value]
|
11
|
+
end
|
12
|
+
|
13
|
+
def skip?(object)
|
14
|
+
!object.respond_to?(@method)
|
15
|
+
end
|
16
|
+
|
17
|
+
def valid?(object)
|
18
|
+
object.send(@method, @value)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/sanatio/built-in.rb
CHANGED
@@ -3,3 +3,6 @@ require 'sanatio/built-in/greater_than_or_equal_to'
|
|
3
3
|
require 'sanatio/built-in/greater_than'
|
4
4
|
require 'sanatio/built-in/less_than_or_equal_to'
|
5
5
|
require 'sanatio/built-in/less_than'
|
6
|
+
require 'sanatio/built-in/one_of'
|
7
|
+
require 'sanatio/built-in/valid'
|
8
|
+
require 'sanatio/built-in/matching'
|
data/lib/sanatio/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sanatio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thijs Wouters
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -76,7 +76,11 @@ files:
|
|
76
76
|
- lib/sanatio/built-in/greater_than_or_equal_to.rb
|
77
77
|
- lib/sanatio/built-in/less_than.rb
|
78
78
|
- lib/sanatio/built-in/less_than_or_equal_to.rb
|
79
|
+
- lib/sanatio/built-in/matching.rb
|
80
|
+
- lib/sanatio/built-in/one_of.rb
|
79
81
|
- lib/sanatio/built-in/present.rb
|
82
|
+
- lib/sanatio/built-in/support/compare.rb
|
83
|
+
- lib/sanatio/built-in/valid.rb
|
80
84
|
- lib/sanatio/class_validator.rb
|
81
85
|
- lib/sanatio/field_validator.rb
|
82
86
|
- lib/sanatio/skippable.rb
|