d_struct 0.1.0 → 0.2.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/README.md +10 -0
- data/lib/d_struct/d_struct.rb +6 -6
- data/lib/d_struct/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a6840c5eae09929cb404d64d4ec3dd2b1e938319
|
4
|
+
data.tar.gz: b5f360621350357630d59731b41eb633a0a7d245
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 558a57a25c18473e104a4a8584247689ab118341c0a6614a71abd217cebf9b6de994ffdebd07dd8d345928071f459c2c9e3b8514db80764b316d03226f700f1a
|
7
|
+
data.tar.gz: 050007957695b98443da669bfefac051ea780ae3afeb9f9a227e49acf6fe65fe976124f13582e75a75c96e4e9a60b9c660f58afa4de6acc401f7a9af45bd2d2f
|
data/README.md
CHANGED
@@ -25,18 +25,28 @@
|
|
25
25
|
|
26
26
|
# unknown key
|
27
27
|
struct = MyStruct.new({unknown_key: '123'})
|
28
|
+
struct.add_validation_schema MyValidationSchema
|
28
29
|
puts struct.valid? # => false
|
29
30
|
puts struct.errors # => {unknown_key: 'unknown key'}
|
30
31
|
|
31
32
|
# missing keys
|
32
33
|
struct = MyStruct.new({})
|
34
|
+
struct.add_validation_schema MyValidationSchema
|
33
35
|
puts struct.valid? # => false
|
34
36
|
puts struct.errors # => {:string=>["is missing"], :int=>["is missing"], :bool=>["is missing"], :arr=>["is missing"]}
|
35
37
|
|
36
38
|
# invalid values
|
37
39
|
struct = MyStruct.new({string: nil, int: nil, bool: nil, arr: nil})
|
40
|
+
struct.add_validation_schema MyValidationSchema
|
38
41
|
puts struct.valid? # => false
|
39
42
|
puts struct.errors # => {:string=>["must be filled"], :int=>["must be filled"], :bool=>["must be filled"], :arr=>["must be filled"]}
|
43
|
+
|
44
|
+
# multiple schemas
|
45
|
+
Schema1 = Dry::Validation.Schema{key(:string).required(:str?)}
|
46
|
+
Schema2 = Dry::Validation.Schema{key(:int).required(:int?)}
|
47
|
+
struct = MyStruct.new({string: 'abc', int: 123})
|
48
|
+
struct.add_validation_schema Schema1, Schema2
|
49
|
+
puts struct.valid? # => true
|
40
50
|
```
|
41
51
|
|
42
52
|
## Installation
|
data/lib/d_struct/d_struct.rb
CHANGED
@@ -4,7 +4,6 @@ module DStruct
|
|
4
4
|
class DStruct
|
5
5
|
|
6
6
|
attr_reader :to_h
|
7
|
-
attr_accessor :validation_schema
|
8
7
|
|
9
8
|
def self.attributes(attributes_hash)
|
10
9
|
@attributes_readers = attributes_hash.values.flatten
|
@@ -54,12 +53,13 @@ module DStruct
|
|
54
53
|
end
|
55
54
|
end
|
56
55
|
|
57
|
-
def add_validation_schema(schema)
|
58
|
-
@
|
56
|
+
def add_validation_schema(*schema)
|
57
|
+
@validation_schemas << schema
|
59
58
|
end
|
60
59
|
|
61
60
|
def initialize(attributes_hash)
|
62
61
|
@to_h = {}
|
62
|
+
@validation_schemas = []
|
63
63
|
attributes_hash.each do |k,v|
|
64
64
|
begin
|
65
65
|
send("#{k}=", v)
|
@@ -71,9 +71,9 @@ module DStruct
|
|
71
71
|
end
|
72
72
|
|
73
73
|
def errors
|
74
|
-
return @errors if @errors
|
75
|
-
return {}
|
76
|
-
@errors ||=
|
74
|
+
return @errors if @errors # unknown key
|
75
|
+
return {} if @validation_schemas == [] # no schemas
|
76
|
+
@errors ||= @validation_schemas.flatten.reduce({}){|errors, schema| errors.update(schema.call(to_h).messages)}
|
77
77
|
end
|
78
78
|
|
79
79
|
def valid?
|
data/lib/d_struct/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: d_struct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Damir Roso
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-03-
|
11
|
+
date: 2016-03-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|