Premailex v0.1.3 Premailex.Util View Source

Module that contains utility functions.

Link to this section Summary

Functions

Traverses tree searching for needle, and will call provided function on any occurances

Traverse all trees in array searching for needle, and will call function with element and number times needle has been found so far

Traverses tree until first match for needle

Link to this section Types

Link to this type html_tree() View Source
html_tree() :: tuple() | list()
Link to this type needle() View Source
needle() :: binary() | tuple() | list()

Link to this section Functions

Link to this function traverse(html, needles, fun) View Source
traverse(html_tree(), needle(), function()) ::
  html_tree() |
  {:halt, html_tree()}

Traverses tree searching for needle, and will call provided function on any occurances.

If the function returns {:halt, any}, traverse will stop, and result will be {:halt, html_tree}.

Examples

iex> Premailex.Util.traverse({"div", [], [{"p", [], ["First paragraph"]}, {"p", [], ["Second paragraph"]}]}, "p", fn {name, attrs, _children} -> {name, attrs, ["Updated"]} end)
{"div", [], [{"p", [], ["Updated"]}, {"p", [], ["Updated"]}]}

iex> Premailex.Util.traverse({"div", [], [{"p", [], ["First paragraph"]}, {"p", [], ["Second paragraph"]}]}, {"p", [], ["Second paragraph"]}, fn {name, attrs, _children} -> {name, attrs, ["Updated"]} end)
{"div", [], [{"p", [], ["First paragraph"]}, {"p", [], ["Updated"]}]}
Link to this function traverse_reduce(children, needle, fun) View Source
traverse_reduce(list(), needle(), function()) :: {html_tree(), integer()}

Traverse all trees in array searching for needle, and will call function with element and number times needle has been found so far.

Examples

iex> Premailex.Util.traverse_reduce([{"p", [], ["First paragraph"]}, {"p", [], ["Second paragraph"]}], "p", fn({name, attrs, _children}, acc) -> {name, attrs, ["Updated " <> to_string(acc)]} end)
{[{"p", [], ["Updated 0"]}, {"p", [], ["Updated 1"]}], 2}
Link to this function traverse_until_first(html, needle, fun) View Source
traverse_until_first(html_tree(), needle(), function()) :: html_tree()

Traverses tree until first match for needle.

Examples

iex> Premailex.Util.traverse_until_first({"div", [], [{"p", [], ["First paragraph"]}, {"p", [], ["Second paragraph"]}]}, "p", fn {name, attrs, _children} -> {name, attrs, ["Updated"]} end)
{"div", [], [{"p", [], ["Updated"]}, {"p", [], ["Second paragraph"]}]}