rschema 1.1.1 → 1.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 +18 -13
- data/lib/rschema.rb +12 -1
- data/lib/rschema/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: 29be05f4beeb1a5f7113f78d3080284a60ff08b5
|
4
|
+
data.tar.gz: f4bc95c00632d5133ce9e78c90cf8b599b4a4cd5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3711949f194d8fd3f2791c83ca71cf5d9dc11618af52aa3d9168fa65899db48d40849201ebede66992775b5db2c7dfb730864501a114c2b2e9cd528d91259d96
|
7
|
+
data.tar.gz: a7c3f7815d70423d3ed6c98841f1473607350d26798f313d02eb1dece212a1cf6cc6172878b46c18e1598ec72748cf08e1caa94bf1cefaef4d98ab35e0e7c4bd
|
data/README.md
CHANGED
@@ -12,7 +12,7 @@ Schemas are generally just plain old hashes, arrays, and classes.
|
|
12
12
|
```ruby
|
13
13
|
post_schema = {
|
14
14
|
title: String,
|
15
|
-
tags: [Symbol],
|
15
|
+
tags: Array[Symbol],
|
16
16
|
body: String
|
17
17
|
}
|
18
18
|
```
|
@@ -43,7 +43,7 @@ Then there are composite schemas, which are schemas composed of subschemas.
|
|
43
43
|
Arrays are composite schemas:
|
44
44
|
|
45
45
|
```ruby
|
46
|
-
schema = [Integer]
|
46
|
+
schema = Array[Integer]
|
47
47
|
RSchema.validate(schema, [10, 11, 12]) #=> true
|
48
48
|
RSchema.validate(schema, [10, 11, '12']) #=> false
|
49
49
|
```
|
@@ -84,12 +84,10 @@ are failing validation.
|
|
84
84
|
|
85
85
|
```ruby
|
86
86
|
schema = RSchema.schema do
|
87
|
-
[
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
}
|
92
|
-
]
|
87
|
+
Array[{
|
88
|
+
name: String,
|
89
|
+
hair: enum([:red, :brown, :blonde, :black])
|
90
|
+
}]
|
93
91
|
end
|
94
92
|
|
95
93
|
value = [
|
@@ -136,7 +134,7 @@ There are two types of array schemas. When the array schema has a single
|
|
136
134
|
element, it is a variable-length array schema:
|
137
135
|
|
138
136
|
```ruby
|
139
|
-
schema = [Symbol]
|
137
|
+
schema = Array[Symbol]
|
140
138
|
RSchema.validate(schema, [:a, :b, :c]) #=> true
|
141
139
|
RSchema.validate(schema, [:a]) #=> true
|
142
140
|
RSchema.validate(schema, []) #=> true
|
@@ -145,7 +143,7 @@ RSchema.validate(schema, []) #=> true
|
|
145
143
|
Otherwise, it is a fixed-length array schema
|
146
144
|
|
147
145
|
```ruby
|
148
|
-
schema = [Integer, String]
|
146
|
+
schema = Array[Integer, String]
|
149
147
|
RSchema.validate(schema, [10, 'hello']) #=> true
|
150
148
|
RSchema.validate(schema, [10, 'hello', 'world']) #=> false
|
151
149
|
RSchema.validate(schema, [10]) #=> false
|
@@ -166,7 +164,7 @@ Keys can be optional:
|
|
166
164
|
```ruby
|
167
165
|
schema = RSchema.schema {{
|
168
166
|
:fname => String,
|
169
|
-
|
167
|
+
optional(:age) => Integer
|
170
168
|
}}
|
171
169
|
RSchema.validate(schema, { fname: 'Lucy', age: 21 }) #=> true
|
172
170
|
RSchema.validate(schema, { fname: 'Tom' }) #=> true
|
@@ -191,11 +189,18 @@ RSchema provides a few other schema types through its DSL:
|
|
191
189
|
# boolean
|
192
190
|
boolean_schema = RSchema.schema{ boolean }
|
193
191
|
RSchema.validate(boolean_schema, false) #=> true
|
194
|
-
RSchema.validate(boolean_schema, nil)
|
192
|
+
RSchema.validate(boolean_schema, nil) #=> false
|
193
|
+
|
194
|
+
# any
|
195
|
+
any_schema = RSchema.schema{ any }
|
196
|
+
RSchema.validate(any_schema, "Hi") #=> true
|
197
|
+
RSchema.validate(any_schema, true) #=> true
|
198
|
+
RSchema.validate(any_schema, false) #=> true
|
199
|
+
RSchema.validate(any_schema, nil) #=> true
|
195
200
|
|
196
201
|
# maybe
|
197
202
|
maybe_schema = RSchema.schema{ maybe(Integer) }
|
198
|
-
RSchema.validate(maybe_schema, 5)
|
203
|
+
RSchema.validate(maybe_schema, 5) #=> true
|
199
204
|
RSchema.validate(maybe_schema, nil) #=> true
|
200
205
|
|
201
206
|
# enum
|
data/lib/rschema.rb
CHANGED
@@ -70,9 +70,10 @@ module RSchema
|
|
70
70
|
|
71
71
|
module DSL
|
72
72
|
module Base
|
73
|
-
def
|
73
|
+
def optional(key)
|
74
74
|
OptionalHashKey.new(key)
|
75
75
|
end
|
76
|
+
alias_method :_?, :optional
|
76
77
|
|
77
78
|
def hash_of(subschemas_hash)
|
78
79
|
raise InvalidSchemaError unless subschemas_hash.size == 1
|
@@ -101,6 +102,10 @@ module RSchema
|
|
101
102
|
def boolean
|
102
103
|
BooleanSchema
|
103
104
|
end
|
105
|
+
|
106
|
+
def any
|
107
|
+
AnySchema
|
108
|
+
end
|
104
109
|
end
|
105
110
|
extend Base
|
106
111
|
end
|
@@ -239,6 +244,12 @@ module RSchema
|
|
239
244
|
end
|
240
245
|
end
|
241
246
|
end
|
247
|
+
|
248
|
+
module AnySchema
|
249
|
+
def self.schema_walk(value, mapper)
|
250
|
+
value
|
251
|
+
end
|
252
|
+
end
|
242
253
|
end
|
243
254
|
|
244
255
|
class Class
|
data/lib/rschema/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rschema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Dalling
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|