Module: Odin
- Defined in:
- lib/odin.rb,
lib/odin/forms.rb,
lib/odin/export.rb,
lib/odin/version.rb,
lib/odin/forms/css.rb,
lib/odin/types/diff.rb,
lib/odin/diff/differ.rb,
lib/odin/forms/types.rb,
lib/odin/forms/units.rb,
lib/odin/diff/patcher.rb,
lib/odin/forms/parser.rb,
lib/odin/types/errors.rb,
lib/odin/types/schema.rb,
lib/odin/types/values.rb,
lib/odin/parsing/token.rb,
lib/odin/forms/renderer.rb,
lib/odin/parsing/parser.rb,
lib/odin/types/document.rb,
lib/odin/types/directive.rb,
lib/odin/types/dyn_value.rb,
lib/odin/types/modifiers.rb,
lib/odin/types/array_item.rb,
lib/odin/types/value_type.rb,
lib/odin/utils/path_utils.rb,
lib/odin/parsing/tokenizer.rb,
lib/odin/types/ordered_map.rb,
lib/odin/parsing/token_type.rb,
lib/odin/utils/format_utils.rb,
lib/odin/forms/accessibility.rb,
lib/odin/parsing/value_parser.rb,
lib/odin/validation/validator.rb,
lib/odin/utils/security_limits.rb,
lib/odin/resolver/type_registry.rb,
lib/odin/transform/verb_context.rb,
lib/odin/types/document_builder.rb,
lib/odin/serialization/stringify.rb,
lib/odin/resolver/import_resolver.rb,
lib/odin/transform/source_parsers.rb,
lib/odin/validation/schema_parser.rb,
lib/odin/transform/transform_types.rb,
lib/odin/transform/verbs/geo_verbs.rb,
lib/odin/serialization/canonicalize.rb,
lib/odin/transform/format_exporters.rb,
lib/odin/transform/transform_engine.rb,
lib/odin/transform/transform_parser.rb,
lib/odin/validation/redos_protection.rb,
lib/odin/transform/verbs/object_verbs.rb,
lib/odin/validation/format_validators.rb,
lib/odin/validation/schema_serializer.rb,
lib/odin/transform/verbs/numeric_verbs.rb,
lib/odin/transform/verbs/datetime_verbs.rb,
lib/odin/validation/invariant_evaluator.rb,
lib/odin/transform/verbs/financial_verbs.rb,
lib/odin/transform/verbs/collection_verbs.rb,
lib/odin/transform/verbs/aggregation_verbs.rb,
lib/odin/validation/schema_definition_validator.rb
Defined Under Namespace
Modules: Diff, Errors, Export, Forms, Parsing, Resolver, Serialization, Transform, Types, Utils, Validation
Constant Summary
collapse
- VERSION =
"1.1.0"
Class Method Summary
collapse
-
.builder ⇒ Object
-
.canonicalize(doc) ⇒ Object
-
.collapse_chain(input, options = nil) ⇒ Object
Collapse a chained ODIN document into its computed current state.
-
.diff(a, b) ⇒ Object
-
.execute_transform(transform_def, source, import_resolver: nil) ⇒ Object
-
.parse(text, options = nil) ⇒ Object
-
.parse_documents(text, options = nil) ⇒ Object
Parse a chained document (one or more documents separated by —) into the full list of documents.
-
.parse_schema(text) ⇒ Object
-
.parse_transform(text) ⇒ Object
-
.patch(doc, diff_result) ⇒ Object
-
.stringify(doc, options = {}) ⇒ Object
-
.transform(transform_text, source) ⇒ Object
-
.validate(doc, schema, options = {}, registry = nil) ⇒ Object
-
.validate_with_imports(doc, schema, base_path, options = {}, resolver_options = {}) ⇒ Object
Resolve a schema’s imports into a type registry, then validate the document.
Class Method Details
.canonicalize(doc) ⇒ Object
.collapse_chain(input, options = nil) ⇒ Object
Collapse a chained ODIN document into its computed current state.
Later documents overlay earlier ones, a repeated path replaces the earlier value, field = ~ removes the field and its descendants, and field[] = ~ clears the array. The result carries the final document’s metadata.
Accepts chained ODIN text or a pre-parsed list of documents.
65
66
67
68
|
# File 'lib/odin.rb', line 65
def collapse_chain(input, options = nil)
docs = input.is_a?(Array) ? input : parse_documents(input, options)
collapse_documents(docs)
end
|
175
176
177
|
# File 'lib/odin.rb', line 175
def execute_transform(transform_def, source, import_resolver: nil)
Transform::TransformEngine.new.execute(transform_def, source, import_resolver: import_resolver)
end
|
.parse(text, options = nil) ⇒ Object
46
47
48
49
|
# File 'lib/odin.rb', line 46
def parse(text, options = nil)
text = text.encode("UTF-8") if text.is_a?(String) && text.encoding != Encoding::UTF_8
Parsing::OdinParser.new.parse(text, options)
end
|
.parse_documents(text, options = nil) ⇒ Object
Parse a chained document (one or more documents separated by —) into the full list of documents. A single document yields a one-element array.
53
54
55
56
|
# File 'lib/odin.rb', line 53
def parse_documents(text, options = nil)
result = parse(text, options)
result.respond_to?(:documents) ? result.documents : [result]
end
|
.parse_schema(text) ⇒ Object
142
143
144
145
|
# File 'lib/odin.rb', line 142
def parse_schema(text)
text = text.encode("UTF-8") if text.is_a?(String) && text.encoding != Encoding::UTF_8
Validation::SchemaParser.new.parse_schema(text)
end
|
170
171
172
173
|
# File 'lib/odin.rb', line 170
def parse_transform(text)
text = text.encode("UTF-8") if text.is_a?(String) && text.encoding != Encoding::UTF_8
Transform::TransformParser.new.parse(text)
end
|
.patch(doc, diff_result) ⇒ Object
162
163
164
|
# File 'lib/odin.rb', line 162
def patch(doc, diff_result)
Diff::Patcher.new.apply_patch(doc, diff_result)
end
|
.stringify(doc, options = {}) ⇒ Object
179
180
181
182
|
# File 'lib/odin.rb', line 179
def transform(transform_text, source)
td = parse_transform(transform_text)
execute_transform(td, source)
end
|
.validate(doc, schema, options = {}, registry = nil) ⇒ Object
147
148
149
|
# File 'lib/odin.rb', line 147
def validate(doc, schema, options = {}, registry = nil)
Validation::Validator.new.validate(doc, schema, options, registry)
end
|
.validate_with_imports(doc, schema, base_path, options = {}, resolver_options = {}) ⇒ Object
Resolve a schema’s imports into a type registry, then validate the document.
152
153
154
155
156
|
# File 'lib/odin.rb', line 152
def validate_with_imports(doc, schema, base_path, options = {}, resolver_options = {})
_flattened, registry = Resolver::ImportResolver.new(**resolver_options)
.resolve_with_registry(schema, base_path: base_path)
validate(doc, schema, options, registry)
end
|