Packages
zoi
0.18.4
0.18.7
0.18.6
0.18.5
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.1
0.16.0
0.15.0
0.14.1
0.14.0
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.1
0.9.0
0.9.0-rc.1
0.9.0-rc.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.0
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
Zoi is a schema validation library for Elixir, designed to provide a simple and flexible way to define and validate data.
Current section
Files
Jump to
Current section
Files
lib/zoi/type_spec.ex
defprotocol Zoi.TypeSpec do
@moduledoc """
Protocol for generating Elixir type specifications from Zoi schemas.
Each type can implement this protocol to define how it should be represented
as an Elixir typespec. This is used by `Zoi.type_spec/1` to generate type
specifications that can be used with `@type` attributes.
## Example
defmodule MyCustomType do
use Zoi.Type.Def
defimpl Zoi.TypeSpec do
def spec(_schema, _opts) do
quote(do: my_custom_type())
end
end
end
"""
@fallback_to_any true
@doc """
Returns a quoted Elixir type specification for the given schema.
"""
@spec spec(Zoi.schema(), Zoi.options()) :: Macro.t()
def spec(schema, opts)
end
defimpl Zoi.TypeSpec, for: Any do
def spec(schema, _opts) do
raise ArgumentError, "TypeSpec not implemented for schema: #{inspect(schema)}"
end
end