Module lee

Data Types

cooked_module()

cooked_module() = lee_storage:data(#mnode{metatypes = ordsets:set(atom()), metaparams = map()})

data()

data() = lee_storage:data() | [lee_storage:data()]

key()

key() = [node_id() | {'$child', term()} | '$children']

lee_module()

lee_module() = namespace()

metatype()

metatype() = atom()

mnode()

mnode() = {[metatype()], properties(), lee_module()} | {[metatype()], properties()}

model()

model() = #model{metamodel = lee:cooked_module(), model = lee:cooked_module(), meta_class_idx = #{lee:metatype() => [lee:key()]}}

model_key()

model_key() = [node_id() | '$children']

namespace()

namespace() = #{node_id() => mnode() | namespace()}

node_id()

node_id() = atom() | tuple() | integer()

patch()

patch() = lee_storage:patch(term())

properties()

properties() = #{atom() => term()}

type()

type() = #type{id = lee:key(), refinement = map(), parameters = [lee:type()]} | atom() | {var, term()}

validate_result()

validate_result() = {ok, Warnings::[string()]} | {error, Errors::[term()], Warnings::[term()]}

Function Index

base_metamodel/0Model module containing basic metatypes:.
from_string/3
from_strings/3Temporary function, don't use it.
get/3Get a value from the config.
list/3List objects in Data that can match Key
meta_validate/1Equivalent to meta_validate(all, Model).
meta_validate/2Validate model itself against its metamodel.
namespace/2Put model to a namespace.
validate/2Equivalent to validate(all, Model, Data).
validate/3Validate Data against Model.

Function Details

base_metamodel/0

base_metamodel() -> lee:module()

Model module containing basic metatypes:

value

value is a leaf node, i.e. a concrete value.

Metaparameters

map

map denotes a container node that groups multiple values together.

Metaparameters:

from_string/3

from_string(Model::lee:model(), Key::lee:model_key(), String::string()) -> {ok, term()} | {error, string()}

from_strings/3

from_strings(Model::lee:model(), Key::lee:model_key(), Strings::[string()]) -> {ok, [term()]} | {error, string()}

Temporary function, don't use it.

get/3

get(Model::lee:model() | lee:cooked_module(), Data::data(), Key::lee:key()) -> term()

Get a value from the config

The return value is guaranteed safe, as long as Data has been validated against the Model, and Key is a valid Model key

list/3

list(Model::model() | cooked_module(), Data::data(), Key::lee:key()) -> [lee:key()]

List objects in Data that can match Key

?children nodes in the key will be replaced with actual child keys, e.g.
  list(Model, Data, [foo, ?children])
will return
     [[foo, ?lcl(1)], [foo, ?lcl(2)]]
when map [foo] contains two children with keys 1 and 2.

meta_validate/1

meta_validate(Model::lee:model()) -> validate_result()

Equivalent to meta_validate(all, Model).

meta_validate/2

meta_validate(MetaTypes::[metatype()] | all, Model::lee:model()) -> validate_result()

Validate model itself against its metamodel. Useful for spotting bugs in the model definition

namespace/2

namespace(Key::lee:key(), M::lee:module()) -> lee:module()

Put model to a namespace.

namespace([foo, bar], A) is equivalent to #{foo => #{bar => A}}

validate/2

validate(Model::lee:model(), Data::data()) -> validate_result()

Equivalent to validate(all, Model, Data).

validate/3

validate(MetaTypes::[metatype()] | all, Model::lee:model(), Data::data()) -> validate_result()

Validate Data against Model. MetaTypes is a list of metatypes that should be validated, or atom all


Generated by EDoc