lib/terrasol/document/format.ex
defmodule Terrasol.Document.Format do
@moduledoc """
Behaviour for Document handler modules
"""
@doc """
The "format" value which this module handles
"""
@callback format_string() :: String.t()
@doc """
Parse a map into a struct.
Return {:invalid, [atoms for unvalidatable keys]}
"""
@callback parse(map) :: map | {:invalid, [atom]}
@doc """
Build a struct from a supplied map using proper defaults
Return {:invalid, [atoms for invalid supplied keys]}
"""
@callback build(map) :: map | {:invalid, [atom]}
end