Packages
floki
0.23.1
0.38.4
0.38.3
0.38.2
0.38.1
0.38.0
0.37.1
0.37.0
0.36.3
0.36.2
0.36.1
0.36.0
0.35.4
0.35.3
0.35.2
0.35.1
0.35.0
0.34.3
0.34.2
0.34.1
0.34.0
0.33.1
0.33.0
0.32.1
0.32.0
0.31.0
0.30.1
0.30.0
0.29.0
0.28.0
0.27.0
0.26.0
0.25.0
0.24.0
0.23.1
0.23.0
0.22.0
0.21.0
0.20.4
0.20.3
0.20.2
0.20.1
0.20.0
0.19.3
0.19.2
0.19.1
0.19.0
0.18.1
0.18.0
0.17.2
0.17.1
0.17.0
0.16.0
0.15.0
0.14.0
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.0
0.10.1
0.10.0
0.9.0
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.0
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.1
0.1.0
0.0.5
0.0.4
0.0.3
0.0.2
0.0.1
Floki is a simple HTML parser that enables search for nodes using CSS selectors.
Current section
Files
Jump to
Current section
Files
lib/floki/traversal.ex
defmodule Floki.Traversal do
@moduledoc false
def traverse_and_update(text, _fun) when is_binary(text), do: text
def traverse_and_update([head | tail], fun) do
case traverse_and_update(head, fun) do
nil -> traverse_and_update(tail, fun)
mapped_head -> [mapped_head | traverse_and_update(tail, fun)]
end
end
def traverse_and_update([], _fun), do: []
def traverse_and_update(xml_tag = {:pi, _, _}, fun), do: fun.(xml_tag)
def traverse_and_update({elem, attrs, children}, fun) do
mapped_children = traverse_and_update(children, fun)
fun.({elem, attrs, mapped_children})
end
def traverse_and_update({:comment, children}, fun), do: fun.({:comment, children})
def traverse_and_update(doctype = {:doctype, _, _, _}, fun), do: fun.(doctype)
end