plinko 0.1.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 +7 -0
- data/lib/plinko/multi_validator.rb +40 -0
- data/lib/plinko/validation.rb +31 -0
- data/lib/plinko/validator.rb +29 -0
- data/lib/plinko.rb +6 -0
- metadata +81 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 1c49d0ebb809f6673de1045693628d5567438b9b
|
4
|
+
data.tar.gz: fa7f596079f9dff9bd4fd5235422aa650e01bee3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a2d85003ec52cbc16d4fe416cdae83cc55f5801668ac3749083ca672b07618a4bcd851a438be88325f3416069ba47e69eeacd27d4b2122029aa82c182dcb0c01
|
7
|
+
data.tar.gz: 5481d0b47ad76028177dbd2cf6d863b1b8da6f5041485791c63af04186240282ab7d5c72a5b0e2cc8b955db8045074730d14bf8357d842f94c1068ee03e7a7c1
|
@@ -0,0 +1,40 @@
|
|
1
|
+
require_relative 'validation'
|
2
|
+
|
3
|
+
module Plinko
|
4
|
+
class MultiValidator
|
5
|
+
attr_accessor :validated_object, :validators
|
6
|
+
|
7
|
+
def initialize(validated_object, validators = [])
|
8
|
+
self.validated_object = validated_object
|
9
|
+
self.validators = validators
|
10
|
+
end
|
11
|
+
|
12
|
+
def seed
|
13
|
+
Validation.new(validated_object)
|
14
|
+
end
|
15
|
+
|
16
|
+
def errors
|
17
|
+
validation.errors
|
18
|
+
end
|
19
|
+
|
20
|
+
def valid?
|
21
|
+
validation.valid?
|
22
|
+
end
|
23
|
+
|
24
|
+
def validation
|
25
|
+
validators.reduce(seed) do |memo, validator|
|
26
|
+
memo.with(validator)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def validate!
|
31
|
+
validators.reduce(seed) do |memo, validator|
|
32
|
+
temp_val = memo.with(validator)
|
33
|
+
|
34
|
+
raise StandardError temp_val.errors unless temp_val.valid?
|
35
|
+
|
36
|
+
temp_val
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Plinko
|
2
|
+
class Validation
|
3
|
+
attr_accessor :value, :errors
|
4
|
+
|
5
|
+
def initialize(value, errors = [])
|
6
|
+
self.value = value
|
7
|
+
self.errors = errors
|
8
|
+
end
|
9
|
+
|
10
|
+
def with(validator)
|
11
|
+
new_value, validation_errors = validator.validate(value)
|
12
|
+
accumulated_errors = errors + Array(validation_errors)
|
13
|
+
|
14
|
+
return Valid.new(new_value) if accumulated_errors.empty?
|
15
|
+
|
16
|
+
Error.new(new_value, accumulated_errors)
|
17
|
+
end
|
18
|
+
|
19
|
+
class Valid < Validation
|
20
|
+
def valid?
|
21
|
+
true
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
class Error < Validation
|
26
|
+
def valid?
|
27
|
+
false
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module Plinko
|
2
|
+
class Validator
|
3
|
+
attr_accessor :value
|
4
|
+
|
5
|
+
def initialize(value)
|
6
|
+
self.value = value
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.validate(value)
|
10
|
+
new(value).validate
|
11
|
+
end
|
12
|
+
|
13
|
+
def validate
|
14
|
+
if validation
|
15
|
+
value
|
16
|
+
else
|
17
|
+
[value, [error_message]]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def validation
|
22
|
+
true
|
23
|
+
end
|
24
|
+
|
25
|
+
def error_message
|
26
|
+
"An error occurred."
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/plinko.rb
ADDED
metadata
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: plinko
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mitch Monsen
|
8
|
+
- Benjamin Kimball
|
9
|
+
- Nathan Davis
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2015-04-27 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: bundler
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.9'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '1.9'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: rake
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - "~>"
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '10.0'
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '10.0'
|
43
|
+
description: Plinko helps you create validators that collect all validation errors
|
44
|
+
instead of breaking on the first failure.
|
45
|
+
email:
|
46
|
+
- mmonsen7@gmail.com
|
47
|
+
- ben@creditera.com
|
48
|
+
- nbriardavis@gmail.com
|
49
|
+
executables: []
|
50
|
+
extensions: []
|
51
|
+
extra_rdoc_files: []
|
52
|
+
files:
|
53
|
+
- "./lib/plinko.rb"
|
54
|
+
- "./lib/plinko/multi_validator.rb"
|
55
|
+
- "./lib/plinko/validation.rb"
|
56
|
+
- "./lib/plinko/validator.rb"
|
57
|
+
homepage: https://github.com/creditera/plinko
|
58
|
+
licenses:
|
59
|
+
- MIT
|
60
|
+
metadata: {}
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options: []
|
63
|
+
require_paths:
|
64
|
+
- lib
|
65
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - ">="
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0'
|
75
|
+
requirements: []
|
76
|
+
rubyforge_project:
|
77
|
+
rubygems_version: 2.4.6
|
78
|
+
signing_key:
|
79
|
+
specification_version: 4
|
80
|
+
summary: Composable, collected validations.
|
81
|
+
test_files: []
|