Module: DataModel

Extended by:
DataModel, T::Sig
Included in:
DataModel
Defined in:
lib/data_model/type.rb,
lib/data_model.rb,
lib/data_model/error.rb,
lib/data_model/model.rb,
lib/data_model/errors.rb,
lib/data_model/boolean.rb,
lib/data_model/builtin.rb,
lib/data_model/logging.rb,
lib/data_model/scanner.rb,
lib/data_model/testing.rb,
lib/data_model/version.rb,
lib/data_model/builtin/date.rb,
lib/data_model/builtin/hash.rb,
lib/data_model/builtin/time.rb,
lib/data_model/builtin/array.rb,
lib/data_model/builtin/float.rb,
lib/data_model/fixtures/date.rb,
lib/data_model/fixtures/hash.rb,
lib/data_model/fixtures/time.rb,
lib/data_model/type_registry.rb,
lib/data_model/builtin/string.rb,
lib/data_model/builtin/symbol.rb,
lib/data_model/fixtures/array.rb,
lib/data_model/fixtures/float.rb,
lib/data_model/builtin/boolean.rb,
lib/data_model/builtin/integer.rb,
lib/data_model/fixtures/string.rb,
lib/data_model/fixtures/symbol.rb,
lib/data_model/fixtures/boolean.rb,
lib/data_model/fixtures/example.rb,
lib/data_model/fixtures/integer.rb,
lib/data_model/testing/minitest.rb,
lib/data_model/builtin/big_decimal.rb,
lib/data_model/fixtures/big_decimal.rb

Overview

typed: strict

Defined Under Namespace

Modules: Builtin, Errors, Logging, Scanner, Testing Classes: Boolean, Error, Model, Type, TypeRegistry

Constant Summary collapse

TSchema =
T.type_alias { T::Array[Object] }
TData =
T.type_alias { Object }
TError =

an error is a tuple of [error_type, error_context], where context provides additional information about the error

T.type_alias { [Symbol, Object] }
TTypeMap =

a map of symbol => type, suitable for sending to a TypeRegistry

T.type_alias { T::Hash[Symbol, T.class_of(Type)] }
VERSION =
"0.3.0"

Instance Method Summary collapse

Instance Method Details

#define(schema, registry: TypeRegistry.instance) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/data_model.rb', line 31

def define(schema, registry: TypeRegistry.instance)
  scanned = Scanner.scan(schema, registry)

  type = registry.type(
    scanned.type,
    args: scanned.args,
    params: scanned.params,
  )

  model = Model.new(schema, type)

  return model
end

#register_global_type(name, type) ⇒ Object



46
47
48
# File 'lib/data_model.rb', line 46

def register_global_type(name, type)
  TypeRegistry.register(name, type)
end