Packages

Eml makes markup a first class citizen in Elixir. It provides a flexible and modular toolkit for generating, parsing and manipulating markup. It's main focus is html, but other markup languages could be implemented as well.

Current section

Files

Jump to
eml lib eml readable.ex
Raw

lib/eml/readable.ex

defprotocol Eml.Readable do
@moduledoc """
The Eml Readable protocol.
"""
def read(data, lang)
end
defimpl Eml.Readable, for: BitString do
def read(data, lang), do: lang.read(data, BitString)
end
defimpl Eml.Readable, for: Integer do
def read(data, lang), do: lang.read(data, Integer)
end
defimpl Eml.Readable, for: Float do
def read(data, lang), do: lang.read(data, Float)
end
defimpl Eml.Readable, for: Tuple do
def read(data, lang), do: lang.read(data, Tuple)
end
defimpl Eml.Readable, for: Atom do
def read(nil, _lang), do: nil
def read(true, lang), do: lang.read(true, Atom)
def read(false, lang), do: lang.read(false, Atom)
def read(param, _lang), do: %Eml.Parameter{id: param}
end
defimpl Eml.Readable, for: [Eml.Markup, Eml.Parameter, Eml.Template] do
def read(data, _lang), do: data
end
defimpl Eml.Readable, for: [Function, PID, Port, Reference, List, Map] do
def read(data, _lang), do: { :error, "Unreadable data: #{inspect data}" }
end