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/registry.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/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, Registry, Type

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.4.0"

Instance Method Summary collapse

Instance Method Details

#define(schema, registry: Registry.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: Registry.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)
	Registry.register(name, type)
end