Marker.Element (Marker v2.1.1)

View Source

This 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

attr_name()

@type attr_name() :: atom()

attr_value()

@type attr_value() :: Marker.Encoder.t()

attrs()

@type attrs() :: [{attr_name(), attr_value()}]

t()

@type t() :: %Marker.Element{attrs: attrs(), content: Marker.content(), tag: atom()}