Module: RSchema
- Defined in:
- lib/rschema.rb,
lib/rschema/version.rb,
lib/rschema/rails_interop.rb
Defined Under Namespace
Modules: CoercionMapper, DSL, RailsInterop
Classes: EnumSchema, ErrorDetails, GenericHashSchema, GenericSetSchema, MaybeSchema, OptionalHashKey, PredicateSchema
Constant Summary
collapse
- InvalidSchemaError =
Class.new(StandardError)
- ValidationError =
Class.new(StandardError)
- VERSION =
'0.1.0'
Class Method Summary
collapse
Class Method Details
.coerce(schema, value) ⇒ Object
30
31
32
|
# File 'lib/rschema.rb', line 30
def self.coerce(schema, value)
walk(schema, value, CoercionMapper)
end
|
.coerce!(schema, value) ⇒ Object
34
35
36
37
38
39
40
41
|
# File 'lib/rschema.rb', line 34
def self.coerce!(schema, value)
result, error = walk(schema, value, CoercionMapper)
if error.nil?
result
else
raise(ValidationError, error)
end
end
|
.schema(&block) ⇒ Object
12
13
14
|
# File 'lib/rschema.rb', line 12
def self.schema(&block)
DSL.instance_exec(&block)
end
|
.validate!(schema, value) ⇒ Object
21
22
23
24
25
26
27
28
|
# File 'lib/rschema.rb', line 21
def self.validate!(schema, value)
result, error = walk(schema, value)
if error.nil?
result
else
raise(ValidationError, error)
end
end
|
.validation_errors(schema, value) ⇒ Object
16
17
18
19
|
# File 'lib/rschema.rb', line 16
def self.validation_errors(schema, value)
_, error = walk(schema, value)
error
end
|
.walk(schema, value, mapper = nil) ⇒ Object
43
44
45
46
47
48
49
50
51
52
53
54
|
# File 'lib/rschema.rb', line 43
def self.walk(schema, value, mapper = nil)
raise(InvalidSchemaError, schema) unless schema.respond_to?(:schema_walk)
value = mapper.prewalk(schema, value) if mapper
value = schema.schema_walk(value, mapper)
value = mapper.postwalk(schema, value) if mapper
if value.is_a?(RSchema::ErrorDetails)
[nil, value]
else
[value, nil]
end
end
|