Marker.Element (Marker v2.1.1)
View SourceThis module is responsible for generating element macro's. Marker generates by default all html5 elements, but you can easily generate other elements too:
defmodule MyElements do
use Marker.Element, tags: [:my_element, :another_one]
end
You can now use your custom elements like the default elements:
use MyElements
my_element id: 42 do
another_one "Hello world"
end
Which will result in:
{:safe, "<my_element id='42'><another_one>Hello world</another_one></my_element>"}
Casing
You can control the casing of the generated elements too:
defmodule MyElements do
use Marker.Element, casing: :camel, tags: [:my_element, :another_one]
end
my_element id: 42 do
another_one "Hello world"
end
{:safe, "<myElement id='42'><anotherOne>Hello world</anotherOne></myElement>"}
The following casing options are allowed:
:snake
=>my_element
(default):snake_upcase
=>MY_ELEMENT
:pascal
=>MyElement
:camel
=>myElement
:lisp
=>my-element
:lisp_upcase
=>MY-ELEMENT
Summary
Types
@type attr_name() :: atom()
@type attr_value() :: Marker.Encoder.t()
@type attrs() :: [{attr_name(), attr_value()}]
@type t() :: %Marker.Element{attrs: attrs(), content: Marker.content(), tag: atom()}