Packages
floki
0.3.2
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/deep_text.ex
defmodule Floki.DeepText do
@moduledoc """
DeepText is a strategy to get text nodes from a HTML tree using a deep search
algorithm. It will get all string nodes and concat them.
"""
@type html_tree :: tuple | list
@spec get(html_tree) :: binary
@doc """
Get text nodes from a deep tree of HTML nodes.
## Examples
iex> Floki.DeepText.get([{"a", [], ["The mean of life is...", {"strong", [], ["something else"]}] }])
"The mean of life is...something else"
"""
def get(html_tree) do
get_text(html_tree, "")
end
defp get_text(text, acc) when is_binary(text), do: acc <> text
defp get_text(nodes, acc) when is_list(nodes) do
Enum.reduce nodes, acc, fn(child, istr) ->
get_text(child, istr)
end
end
defp get_text({:comment, _}, acc), do: acc
defp get_text({_, _, nodes}, acc) do
get_text(nodes, acc)
end
end