Module: Liminal

Defined in:
lib/liminal.rb,
lib/liminal/path.rb,
lib/liminal/errors.rb,
lib/liminal/schema.rb,
lib/liminal/version.rb,
lib/liminal/compiler.rb,
lib/liminal/components.rb,
lib/liminal/predicate_registry.rb,
lib/liminal/dialects/openapi_30.rb,
lib/liminal/internal/normalizer.rb,
lib/liminal/internal/schema_merge.rb,
lib/liminal/adapters/dry_schema_v1.rb,
lib/liminal/dialects/openapi_30/metadata_validator.rb

Overview

Strict dry-schema to OpenAPI 3.0 compilation.

Defined Under Namespace

Modules: Adapters, Components, Dialects, Internal, Path, Schema Classes: Compiler, ComponentCollisionError, Error, InvalidComponentNameError, InvalidOverrideError, InvalidPredicateResultError, InvalidSchemaCompositionError, InvalidSchemaError, InvalidSchemaSourceError, PredicateAlreadyRegisteredError, PredicateContext, PredicateRegistry, UnknownExclusionPathError, UnknownOverridePathError, UnsupportedDialectError, UnsupportedNodeError, UnsupportedPredicateError

Constant Summary collapse

VERSION =
"0.1.0"

Class Method Summary collapse

Class Method Details

.compile(schema, dialect: :openapi_3_0, source_name: nil, exclude: [], overrides: {}, predicates: PredicateRegistry.default) ⇒ Hash

Compile a Dry::Schema-compatible source into an OpenAPI 3.0 Schema Object.

Parameters:

  • schema (#to_ast)

    declarative dry-schema source

  • dialect (Symbol) (defaults to: :openapi_3_0)

    currently only :openapi_3_0

  • source_name (String, nil) (defaults to: nil)

    label included in diagnostics

  • exclude (Array<Array, String, Symbol>) (defaults to: [])

    property paths to omit

  • overrides (Hash) (defaults to: {})

    property paths mapped to OpenAPI fragments

  • predicates (PredicateRegistry) (defaults to: PredicateRegistry.default)

    immutable predicate registry

Returns:

  • (Hash)

    deterministic Schema Object containing only string keys



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/liminal.rb', line 28

def compile(schema, dialect: :openapi_3_0, source_name: nil, exclude: [], overrides: {},
            predicates: PredicateRegistry.default)
  Compiler.new(
    schema,
    dialect: dialect,
    source_name: source_name,
    exclude: exclude,
    overrides: overrides,
    predicates: predicates
  ).call
end