Packages
floki
0.18.0
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 false
# 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) :: binary
def get(html_tree, sep \\ "") do
get_text(html_tree, "", sep)
end
defp get_text(text, "", _sep) when is_binary(text), do: text
defp get_text(text, acc, sep) when is_binary(text), do: Enum.join([acc, text], sep)
defp get_text(nodes, acc, sep) when is_list(nodes) do
Enum.reduce nodes, acc, fn(child, istr) ->
get_text(child, istr, sep)
end
end
defp get_text({:comment, _}, acc, _), do: acc
defp get_text({"br", _, _}, acc, _), do: acc <> "\n"
defp get_text({_, _, nodes}, acc, sep) do
get_text(nodes, acc, sep)
end
end