Current section
Files
Jump to
Current section
Files
lib/map_schema.ex
defmodule MapSchema do
@moduledoc """
Macro module of `MapSchema`.
"""
alias MapSchema.Base
alias MapSchema.Check
alias MapSchema.CustomTypes
alias MapSchema.DefaultTypes
alias MapSchema.JsonEncoding
alias MapSchema.PropMethods
alias MapSchema.PutPartial
defmacro __using__(opts) do
schema = Keyword.get(opts, :schema)
list_custom_types = Keyword.get(opts, :custom_types)
custom_types = DefaultTypes.param_config(list_custom_types)
base_methods = Base.install(schema)
custom_types_methods = CustomTypes.install(custom_types)
properties_methods = PropMethods.install(schema, custom_types)
put_partial = PutPartial.install()
json_methods = JsonEncoding.install()
check_methods = Check.install()
[
base_methods,
custom_types_methods,
properties_methods,
put_partial,
json_methods,
check_methods
]
|> List.flatten()
end
end