View Source DomHelpers.Accessors (dom_helpers v0.3.1)

Collection of methods to simplify the access to different parts of the DOM.

Summary

Functions

Retrieve the values of the given attribute in the given fragment.

Behaves like attribute/2 but uses the second argument as selector.

Convenience method for piping when building a selector. Behaves like attribute/3 but first argument is the selector and the second one is the htmlable.

Return a list of the classes of the current fragment.

Return a list with the list of classes of all the elements that satisfy the selector in the given fragment.

Convenience method for piping when building a selector. Behaves like classes/2 but first argument is the selector.

Finds all the nodes in the htmlable that satisfy the selector.

Returns the number of elements that satisfy the given selector.

Convenience method for piping when building a selector. Behaves like find_count/2 but first argument is the selector.

Like find/2 but gets the first instance.

Convenience method for piping when building a selector. Behaves like find_first/2 but first argument is the selector.

Convenience method for piping when building a selector. Behaves like find/2 but first argument is the selector.

Returns the whole text inside the html fragment passed in. Spaces are normalised (meaning that if there are multiple spaces together they are reduced to just one and the text is trimmed on both ends).

Convenience method for piping when building a selector. Behaves like text/3 but first argument is the selector. Selector is not optional in this function.

Functions

Link to this function

attribute(htmlable, attr_name)

View Source

Retrieve the values of the given attribute in the given fragment.

Examples

iex> find(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), "li") |> attribute("class")
~w(odd even odd)

iex> find(~s(<ul><li class="odd" data-test="first">First</li><li class="even" data-test="second">Second</li><li class="odd" data-test="third">Third</li></ul>), "li") |> attribute("data-test")
~w(first second third)

iex> find(~s(<ul><li class="odd" data-test="first">First</li><li class="even" data-test="second">Second</li><li class="odd" data-test="third">Third</li></ul>), ".even") |> attribute("data-test")
~w(second)
Link to this function

attribute(htmlable, selector, attr_name)

View Source

Behaves like attribute/2 but uses the second argument as selector.

Examples

iex> attribute(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), "li", "class")
~w(odd even odd)

iex> attribute(~s(<ul><li class="odd" data-test="first">First</li><li class="even" data-test="second">Second</li><li class="odd" data-test="third">Third</li></ul>), "li", "data-test")
~w(first second third)

iex> attribute(~s(<ul><li class="odd" data-test="first">First</li><li class="even" data-test="second">Second</li><li class="odd" data-test="third">Third</li></ul>), ".even", "data-test")
~w(second)
Link to this function

attribute_in(selector, htmlable, attr_name)

View Source

Convenience method for piping when building a selector. Behaves like attribute/3 but first argument is the selector and the second one is the htmlable.

Examples

iex> attribute_in("li", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), "class")
~w(odd even odd)

iex> attribute_in("li", ~s(<ul><li class="odd" data-test="first">First</li><li class="even" data-test="second">Second</li><li class="odd" data-test="third">Third</li></ul>), "data-test")
~w(first second third)

iex> attribute_in(".even", ~s(<ul><li class="odd" data-test="first">First</li><li class="even" data-test="second">Second</li><li class="odd" data-test="third">Third</li></ul>), "data-test")
~w(second)

Return a list of the classes of the current fragment.

Examples

iex> classes(~s(<div class="some classes here">Hello</div>))
[~w(some classes here)]

iex> classes(~s(<div class=" some   classes  here ">Hello</div>))
[~w(some classes here)]

iex> classes(~s(<li class="odd first">1</li><li class="even second">2</li>))
[~w(odd first), ~w(even second)]
Link to this function

classes(htmlable, selector)

View Source

Return a list with the list of classes of all the elements that satisfy the selector in the given fragment.

Example

iex> classes(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), ".odd")
[["odd"], ["odd"]]

iex> classes(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), "li")
[["odd"], ["even"], ["odd"]]

iex> classes(~s[<div class="one two three">Content</div><div class="four five">Other</div>], "div")
[["one", "two", "three"], ["four", "five"]]
Link to this function

classes_in(selector, htmlable)

View Source

Convenience method for piping when building a selector. Behaves like classes/2 but first argument is the selector.

Example

iex> classes_in(".odd", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
[["odd"], ["odd"]]

iex> classes_in("li", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
[["odd"], ["even"], ["odd"]]

iex> classes_in("div", ~s[<div class="one two three">Content</div><div class="four five">Other</div>])
[["one", "two", "three"], ["four", "five"]]
Link to this function

find(htmlable, selector)

View Source

Finds all the nodes in the htmlable that satisfy the selector.

Examples

iex> find(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), ".odd")
[{"li", [{"class", "odd"}], ["First"]}, {"li", [{"class", "odd"}], ["Third"]}]

iex> find(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), ".even")
[{"li", [{"class", "even"}], ["Second"]}]

iex> find(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), ".none")
[]

iex> find(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), "li")
[{"li", [{"class", "odd"}], ["First"]}, {"li", [{"class", "even"}], ["Second"]}, {"li", [{"class", "odd"}], ["Third"]}]
Link to this function

find_count(htmlable, selector)

View Source

Returns the number of elements that satisfy the given selector.

Examples

iex> find_count(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), ".odd")
2

iex> find_count(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), ".even")
1

iex> find_count(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), ".none")
0

iex> find_count(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), "li")
3
Link to this function

find_count_in(selector, htmlable)

View Source

Convenience method for piping when building a selector. Behaves like find_count/2 but first argument is the selector.

Examples

iex> find_count_in(".odd", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
2

iex> find_count_in(".even", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
1

iex> find_count_in(".none", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
0

iex> find_count_in("li", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
3
Link to this function

find_first(htmlable, selector)

View Source

Like find/2 but gets the first instance.

Examples

iex> find_first(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), ".odd")
{"li", [{"class", "odd"}], ["First"]}

iex> find_first(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), ".even")
{"li", [{"class", "even"}], ["Second"]}

iex> find_first(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), ".none")
nil

iex> find_first(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), "li")
{"li", [{"class", "odd"}], ["First"]}
Link to this function

find_first_in(selector, htmlable)

View Source

Convenience method for piping when building a selector. Behaves like find_first/2 but first argument is the selector.

Examples

iex> find_first_in(".odd", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
{"li", [{"class", "odd"}], ["First"]}

iex> find_first_in(".even", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
{"li", [{"class", "even"}], ["Second"]}

iex> find_first_in(".none", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
nil

iex> find_first_in("li", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
{"li", [{"class", "odd"}], ["First"]}
Link to this function

find_in(selector, htmlable)

View Source

Convenience method for piping when building a selector. Behaves like find/2 but first argument is the selector.

Examples

iex> find_in(".odd", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
[{"li", [{"class", "odd"}], ["First"]}, {"li", [{"class", "odd"}], ["Third"]}]

iex> find_in(".even", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
[{"li", [{"class", "even"}], ["Second"]}]

iex> find(~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>), ".none")
[]

iex> find_in("li", ~s(<ul><li class="odd">First</li><li class="even">Second</li><li class="odd">Third</li></ul>))
[{"li", [{"class", "odd"}], ["First"]}, {"li", [{"class", "even"}], ["Second"]}, {"li", [{"class", "odd"}], ["Third"]}]
Link to this function

text(htmlable, selector_or_options \\ [], options \\ [])

View Source

Returns the whole text inside the html fragment passed in. Spaces are normalised (meaning that if there are multiple spaces together they are reduced to just one and the text is trimmed on both ends).

First arguments is an htmlable (see DomHelpers.Htmlable), second can either be a selector or options. If a selector is passed in, find/2 will be used to locate matching elements before getting the text. In case a selector is given, a third optional argument with options can be passed in.

Options to Floki.text/2 can be passed inside the :text key in the options.

Examples

iex> text(~s(<ul><li class="odd"> First </li> <li class="even"> Second </li> <li class="odd"> Third </li></ul>), ".odd")
"First Third"

iex> text(~s(<ul><li class="odd"> First </li> <li class="even"> Second </li> <li class="odd"> Third </li></ul>), ".even")
"Second"

iex> text(~s(<ul><li class="odd"> First </li> <li class="even"> Second </li> <li class="odd"> Third </li></ul>), ".none")
""

iex> text(~s(<ul><li class="odd"> First </li> <li class="even"> Second </li> <li class="odd"> Third </li></ul>), "li")
"First Second Third"

iex> find(~s(<ul><li class="odd"> First </li> <li class="even"> Second </li> <li class="odd"> Third </li></ul>), "li") |> Enum.map(&text/1)
~w(First Second Third)
Link to this function

text_in(selector, htmlable, options \\ [])

View Source

Convenience method for piping when building a selector. Behaves like text/3 but first argument is the selector. Selector is not optional in this function.

Examples

iex> text_in(".odd", ~s(<ul><li class="odd"> First </li> <li class="even"> Second </li> <li class="odd"> Third </li></ul>))
"First Third"

iex> text_in(".even", ~s(<ul><li class="odd"> First </li> <li class="even"> Second </li> <li class="odd"> Third </li></ul>))
"Second"

iex> text_in(".none", ~s(<ul><li class="odd"> First </li> <li class="even"> Second </li> <li class="odd"> Third </li></ul>))
""

iex> text_in("li", ~s(<ul><li class="odd"> First </li> <li class="even"> Second </li> <li class="odd"> Third </li></ul>))
"First Second Third"