diff --git a/lib/floki/raw_html.ex b/lib/floki/raw_html.ex
index f57f453d..42c4fe84 100644
--- a/lib/floki/raw_html.ex
+++ b/lib/floki/raw_html.ex
@@ -32,12 +32,13 @@ defmodule Floki.RawHTML do
end
@encoder &Floki.Entities.encode/1
+ @no_encoder &Function.identity/1
def raw_html(html_tree, options) do
encoder =
case Keyword.fetch(options, :encode) do
{:ok, true} -> @encoder
- {:ok, false} -> &Function.identity/1
+ {:ok, false} -> @no_encoder
:error -> default_encoder()
end
@@ -127,7 +128,7 @@ defmodule Floki.RawHTML do
end
defp tag_attrs(attr_list, encoder) do
- map_intersperse(attr_list, ?\s, &build_attrs(&1, encoder))
+ Enum.map_intersperse(attr_list, ?\s, &build_attrs(&1, encoder))
end
defp tag_with_attrs(type, [], children, padding, _encoder, self_closing_tags),
@@ -173,8 +174,8 @@ defmodule Floki.RawHTML do
defp tag_for(type, attrs, children, encoder, padding, self_closing_tags) do
encoder =
case type do
- "script" -> & &1
- "style" -> & &1
+ "script" -> @no_encoder
+ "style" -> @no_encoder
_ -> encoder
end
@@ -196,26 +197,11 @@ defmodule Floki.RawHTML do
if Application.get_env(:floki, :encode_raw_html, true) do
@encoder
else
- & &1
+ @no_encoder
end
end
# helpers
-
- # TODO: Use Enum.map_intersperse/3 when we require Elixir v1.10+
-
- defp map_intersperse([], _, _),
- do: []
-
- defp map_intersperse([last], _, mapper),
- do: [mapper.(last)]
-
- defp map_intersperse([head | rest], separator, mapper),
- do: [mapper.(head), separator | map_intersperse(rest, separator, mapper)]
-
- defp map_intersperse(%{} = attrs, separator, mapper),
- do: map_intersperse(Map.to_list(attrs), separator, mapper)
-
defp leftpad(:noop), do: ""
defp leftpad(%{pad: pad}), do: pad