hv 0.1.0 → 0.1.1
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/.gitignore +3 -0
- data/Gemfile.lock +24 -0
- data/hv.gemspec +1 -0
- data/lib/hv.rb +1 -0
- data/lib/hv/errors_processor.rb +10 -0
- data/lib/hv/schema.rb +32 -23
- data/lib/hv/version.rb +1 -1
- data/releases/hv-0.1.0.gem +0 -0
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ce070297444b94651fa7b6123b493acc5711fff
|
4
|
+
data.tar.gz: 1d560767fb9fad4d9e92743ad1a5d8fd8e0f3808
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d821845aba2b7d75ad702f4020b080443cdf29822f772a51d9b529200186ad2b9146e6d89d69e5683c8285bf3ef88f0e7e0dc002657c5605cbfc04e7ba85e429
|
7
|
+
data.tar.gz: 70dff345ce9442850dde2fbfa3d6b67b5056cfebd7db73fa5f5a3f6a89140511c2e7de17495fd86f49f926457f88667a61ef838f99637f54e694642213936223
|
data/.gitignore
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
hv (0.1.0)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
byebug (10.0.0)
|
10
|
+
minitest (5.11.3)
|
11
|
+
rake (10.5.0)
|
12
|
+
|
13
|
+
PLATFORMS
|
14
|
+
ruby
|
15
|
+
|
16
|
+
DEPENDENCIES
|
17
|
+
bundler (~> 1.16)
|
18
|
+
byebug
|
19
|
+
hv!
|
20
|
+
minitest (~> 5.0)
|
21
|
+
rake (~> 10.0)
|
22
|
+
|
23
|
+
BUNDLED WITH
|
24
|
+
1.16.0
|
data/hv.gemspec
CHANGED
data/lib/hv.rb
CHANGED
data/lib/hv/schema.rb
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
module Hv
|
2
2
|
class Schema
|
3
3
|
|
4
|
-
def allowed_validators
|
5
|
-
[:optional?, :format?, :min_size?, :max_size?, :size?, :lt?, :gt?, :types?, :type?, :enum?, :proc?, :array?, :empty?]
|
6
|
-
end
|
7
|
-
|
8
4
|
def initialize(schema)
|
9
5
|
@schema = schema
|
10
6
|
end
|
@@ -13,20 +9,33 @@ module Hv
|
|
13
9
|
@result
|
14
10
|
end
|
15
11
|
|
16
|
-
def path
|
17
|
-
@path
|
18
|
-
end
|
19
|
-
|
20
12
|
def validates?(input)
|
21
13
|
@result = []
|
22
14
|
validate_schema(@schema, input, [])
|
23
15
|
end
|
24
16
|
|
17
|
+
def errors(errors_processor=Hv::ErrorsProcessor)
|
18
|
+
errors_processor.call(@result)
|
19
|
+
end
|
20
|
+
|
25
21
|
private
|
26
22
|
|
23
|
+
def validator_key?(key)
|
24
|
+
allowed_validators.include?(key) ||
|
25
|
+
custom_validators.include?(key)
|
26
|
+
end
|
27
|
+
|
28
|
+
def allowed_validators
|
29
|
+
[:optional?, :format?, :min_size?, :max_size?, :size?, :lt?, :gt?, :types?, :type?, :enum?, :proc?, :array?, :empty?]
|
30
|
+
end
|
31
|
+
|
32
|
+
def custom_validators
|
33
|
+
[]
|
34
|
+
end
|
35
|
+
|
27
36
|
def validate_schema(spec, value, path=nil)
|
28
37
|
spec.each do |key, _spec|
|
29
|
-
if !
|
38
|
+
if !validator_key?(key)
|
30
39
|
_value = value[key] rescue nil
|
31
40
|
validate_schema(_spec, _value, [path, key].flatten)
|
32
41
|
else
|
@@ -34,29 +43,29 @@ module Hv
|
|
34
43
|
true
|
35
44
|
else
|
36
45
|
next if key == :optional?
|
37
|
-
method("validate_#{key}").call(_spec, value)
|
46
|
+
method("validate_#{key}").call(_spec, value, path)
|
38
47
|
end
|
39
|
-
@result << [path, key, _spec,
|
48
|
+
@result << [path, key, _spec, value] unless match
|
40
49
|
end
|
41
50
|
end
|
42
51
|
@result.empty?
|
43
52
|
end
|
44
53
|
|
45
54
|
def optional_attr?(path)
|
46
|
-
@schema.dig(*path)[:optional?]
|
55
|
+
(@schema.dig(*path) || {})[:optional?]
|
47
56
|
end
|
48
57
|
|
49
|
-
def validate_enum?(spec, value)
|
58
|
+
def validate_enum?(spec, value, path)
|
50
59
|
spec.include?(value)
|
51
60
|
end
|
52
61
|
|
53
|
-
def validate_types?(spec, value)
|
62
|
+
def validate_types?(spec, value, path)
|
54
63
|
raise "Argument for :types? must be an array of types" unless spec.is_a? Array
|
55
64
|
spec.any? { |_type| value.is_a?(_type) }
|
56
65
|
end
|
57
66
|
|
58
67
|
|
59
|
-
def validate_type?(spec, value)
|
68
|
+
def validate_type?(spec, value, path)
|
60
69
|
value.is_a?(spec)
|
61
70
|
end
|
62
71
|
|
@@ -69,27 +78,27 @@ module Hv
|
|
69
78
|
end
|
70
79
|
end
|
71
80
|
|
72
|
-
def validate_min_size?(spec, value)
|
81
|
+
def validate_min_size?(spec, value, path)
|
73
82
|
validate_size(spec, value, '>=')
|
74
83
|
end
|
75
84
|
|
76
|
-
def validate_max_size?(spec, value)
|
85
|
+
def validate_max_size?(spec, value, path)
|
77
86
|
validate_size(spec, value, '<=')
|
78
87
|
end
|
79
88
|
|
80
|
-
def validate_size?(spec, value)
|
89
|
+
def validate_size?(spec, value, path)
|
81
90
|
validate_size(spec, value, '==')
|
82
91
|
end
|
83
92
|
|
84
|
-
def validate_lt?(spec, value)
|
93
|
+
def validate_lt?(spec, value, path)
|
85
94
|
validate_size(spec, value, '<')
|
86
95
|
end
|
87
96
|
|
88
|
-
def validate_gt?(spec, value)
|
97
|
+
def validate_gt?(spec, value, path)
|
89
98
|
validate_size(spec, value, '>')
|
90
99
|
end
|
91
100
|
|
92
|
-
def validate_format?(spec, value)
|
101
|
+
def validate_format?(spec, value, path)
|
93
102
|
if value.respond_to? :match?
|
94
103
|
value.match?(spec)
|
95
104
|
else
|
@@ -99,8 +108,8 @@ module Hv
|
|
99
108
|
|
100
109
|
def validate_array?(spec, values, path=nil)
|
101
110
|
return false unless values.is_a?(Array)
|
102
|
-
values.all? {|value|
|
103
|
-
validate_schema(spec, value, path)
|
111
|
+
values.to_enum.with_index.all? {|value, index|
|
112
|
+
validate_schema(spec, value, [path, index].flatten)
|
104
113
|
}
|
105
114
|
end
|
106
115
|
|
data/lib/hv/version.rb
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hv
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Monkey Square Lab
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: byebug
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
description: Hash validation
|
56
70
|
email:
|
57
71
|
- monkeysquarelab@gmail.com
|
@@ -63,6 +77,7 @@ files:
|
|
63
77
|
- ".travis.yml"
|
64
78
|
- CODE_OF_CONDUCT.md
|
65
79
|
- Gemfile
|
80
|
+
- Gemfile.lock
|
66
81
|
- LICENSE.txt
|
67
82
|
- README.md
|
68
83
|
- Rakefile
|
@@ -70,8 +85,10 @@ files:
|
|
70
85
|
- bin/setup
|
71
86
|
- hv.gemspec
|
72
87
|
- lib/hv.rb
|
88
|
+
- lib/hv/errors_processor.rb
|
73
89
|
- lib/hv/schema.rb
|
74
90
|
- lib/hv/version.rb
|
91
|
+
- releases/hv-0.1.0.gem
|
75
92
|
homepage: https://github.com/monkeysquarelab/hv
|
76
93
|
licenses:
|
77
94
|
- MIT
|