Module: AnyVali

Defined in:
lib/anyvali.rb,
lib/anyvali/schema.rb,
lib/anyvali/issue_codes.rb,
lib/anyvali/parse_result.rb,
lib/anyvali/parse/coercion.rb,
lib/anyvali/parse/defaults.rb,
lib/anyvali/anyvali_document.rb,
lib/anyvali/validation_error.rb,
lib/anyvali/validation_issue.rb,
lib/anyvali/format/validators.rb,
lib/anyvali/schemas/any_schema.rb,
lib/anyvali/schemas/int_schema.rb,
lib/anyvali/schemas/ref_schema.rb,
lib/anyvali/validation_context.rb,
lib/anyvali/schemas/bool_schema.rb,
lib/anyvali/schemas/enum_schema.rb,
lib/anyvali/schemas/null_schema.rb,
lib/anyvali/interchange/exporter.rb,
lib/anyvali/interchange/importer.rb,
lib/anyvali/schemas/array_schema.rb,
lib/anyvali/schemas/never_schema.rb,
lib/anyvali/schemas/tuple_schema.rb,
lib/anyvali/schemas/union_schema.rb,
lib/anyvali/parse/coercion_config.rb,
lib/anyvali/schemas/number_schema.rb,
lib/anyvali/schemas/object_schema.rb,
lib/anyvali/schemas/record_schema.rb,
lib/anyvali/schemas/string_schema.rb,
lib/anyvali/schemas/literal_schema.rb,
lib/anyvali/schemas/unknown_schema.rb,
lib/anyvali/schemas/nullable_schema.rb,
lib/anyvali/schemas/optional_schema.rb,
lib/anyvali/schemas/intersection_schema.rb

Defined Under Namespace

Modules: Coercion, CoercionConfig, Defaults, Format, Interchange, IssueCodes Classes: AnySchema, AnyValiDocument, ArraySchema, BoolSchema, EnumSchema, IntSchema, IntersectionSchema, LiteralSchema, NeverSchema, NullSchema, NullableSchema, NumberSchema, ObjectSchema, OptionalSchema, ParseResult, RecordSchema, RefSchema, Schema, StringSchema, TupleSchema, UnionSchema, UnknownSchema, ValidationContext, ValidationError, ValidationIssue

Constant Summary collapse

VERSION =
"0.0.1"

Class Method Summary collapse

Class Method Details

.anyObject



107
108
109
# File 'lib/anyvali.rb', line 107

def any
  AnySchema.new
end

.array(items) ⇒ Object



127
128
129
# File 'lib/anyvali.rb', line 127

def array(items)
  ArraySchema.new(items: items)
end

.boolObject



99
100
101
# File 'lib/anyvali.rb', line 99

def bool
  BoolSchema.new
end

.enum_(*values) ⇒ Object



123
124
125
# File 'lib/anyvali.rb', line 123

def enum_(*values)
  EnumSchema.new(values: values.flatten)
end

.export(schema, mode: :portable, definitions: {}) ⇒ Object

Interchange



170
171
172
# File 'lib/anyvali.rb', line 170

def export(schema, mode: :portable, definitions: {})
  Interchange::Exporter.export(schema, mode: mode, definitions: definitions)
end

.float32Object



55
56
57
# File 'lib/anyvali.rb', line 55

def float32
  NumberSchema.new(kind: "float32")
end

.float64Object



59
60
61
# File 'lib/anyvali.rb', line 59

def float64
  NumberSchema.new(kind: "float64")
end

.import(doc) ⇒ Object



174
175
176
# File 'lib/anyvali.rb', line 174

def import(doc)
  Interchange::Importer.import(doc)
end

.import_schema(doc) ⇒ Object



178
179
180
# File 'lib/anyvali.rb', line 178

def import_schema(doc)
  Interchange::Importer.import_schema(doc)
end

.int16Object



71
72
73
# File 'lib/anyvali.rb', line 71

def int16
  IntSchema.new(kind: "int16")
end

.int32Object



75
76
77
# File 'lib/anyvali.rb', line 75

def int32
  IntSchema.new(kind: "int32")
end

.int64Object



79
80
81
# File 'lib/anyvali.rb', line 79

def int64
  IntSchema.new(kind: "int64")
end

.int8Object



67
68
69
# File 'lib/anyvali.rb', line 67

def int8
  IntSchema.new(kind: "int8")
end

.int_Object



63
64
65
# File 'lib/anyvali.rb', line 63

def int_
  IntSchema.new(kind: "int")
end

.intersection(*schemas) ⇒ Object



152
153
154
# File 'lib/anyvali.rb', line 152

def intersection(*schemas)
  IntersectionSchema.new(all_of: schemas.flatten)
end

.literal(value) ⇒ Object



119
120
121
# File 'lib/anyvali.rb', line 119

def literal(value)
  LiteralSchema.new(value: value)
end

.neverObject



115
116
117
# File 'lib/anyvali.rb', line 115

def never
  NeverSchema.new
end

.nullObject



103
104
105
# File 'lib/anyvali.rb', line 103

def null
  NullSchema.new
end

.nullable(schema) ⇒ Object



160
161
162
# File 'lib/anyvali.rb', line 160

def nullable(schema)
  NullableSchema.new(schema: schema)
end

.numberObject



51
52
53
# File 'lib/anyvali.rb', line 51

def number
  NumberSchema.new(kind: "number")
end

.object(properties:, required: [], unknown_keys: nil) ⇒ Object



135
136
137
138
139
140
141
142
# File 'lib/anyvali.rb', line 135

def object(properties:, required: [], unknown_keys: nil)
  ObjectSchema.new(
    properties: properties,
    required: required,
    unknown_keys: unknown_keys || "strip",
    unknown_keys_explicit: !unknown_keys.nil?
  )
end

.optional(schema) ⇒ Object



156
157
158
# File 'lib/anyvali.rb', line 156

def optional(schema)
  OptionalSchema.new(schema: schema)
end

.record(values) ⇒ Object



144
145
146
# File 'lib/anyvali.rb', line 144

def record(values)
  RecordSchema.new(values: values)
end

.ref(ref_path) ⇒ Object



164
165
166
# File 'lib/anyvali.rb', line 164

def ref(ref_path)
  RefSchema.new(ref: ref_path)
end

.stringObject

Builder methods



47
48
49
# File 'lib/anyvali.rb', line 47

def string
  StringSchema.new
end

.tuple(*elements) ⇒ Object



131
132
133
# File 'lib/anyvali.rb', line 131

def tuple(*elements)
  TupleSchema.new(elements: elements.flatten)
end

.uint16Object



87
88
89
# File 'lib/anyvali.rb', line 87

def uint16
  IntSchema.new(kind: "uint16")
end

.uint32Object



91
92
93
# File 'lib/anyvali.rb', line 91

def uint32
  IntSchema.new(kind: "uint32")
end

.uint64Object



95
96
97
# File 'lib/anyvali.rb', line 95

def uint64
  IntSchema.new(kind: "uint64")
end

.uint8Object



83
84
85
# File 'lib/anyvali.rb', line 83

def uint8
  IntSchema.new(kind: "uint8")
end

.union(*variants) ⇒ Object



148
149
150
# File 'lib/anyvali.rb', line 148

def union(*variants)
  UnionSchema.new(variants: variants.flatten)
end

.unknownObject



111
112
113
# File 'lib/anyvali.rb', line 111

def unknown
  UnknownSchema.new
end