From 334863413b54f40a79ac0df88225aafc9a229968 Mon Sep 17 00:00:00 2001 From: Yuri Pereira Constante Date: Thu, 21 Dec 2023 00:29:16 -0300 Subject: [PATCH 1/2] Use list instead of regex for string split --- lib/floki/selector.ex | 2 +- lib/floki/selector/attribute_selector.ex | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/floki/selector.ex b/lib/floki/selector.ex index 706e1659..39fdecac 100644 --- a/lib/floki/selector.ex +++ b/lib/floki/selector.ex @@ -144,7 +144,7 @@ defmodule Floki.Selector do defp do_classes_matches?(nil, _classes), do: false defp do_classes_matches?(class_attr_value, classes) do - classes -- String.split(class_attr_value, ~r/\s+/) == [] + classes -- String.split(class_attr_value, [" ", "\t"]) == [] end defp attributes_matches?(_node, []), do: true diff --git a/lib/floki/selector/attribute_selector.ex b/lib/floki/selector/attribute_selector.ex index 5e8da68c..7e1adb9a 100644 --- a/lib/floki/selector/attribute_selector.ex +++ b/lib/floki/selector/attribute_selector.ex @@ -63,7 +63,7 @@ defmodule Floki.Selector.AttributeSelector do s.attribute |> get_value(attributes) # Splits by whitespaces ("a b c" -> ["a", "b", "c"]) - |> String.split(~r/\s+/) + |> String.split([" ", "\t"]) |> Enum.any?(fn v -> String.downcase(v) == selector_value end) end @@ -103,7 +103,7 @@ defmodule Floki.Selector.AttributeSelector do def match?(attributes, s = %AttributeSelector{match_type: :includes, value: value}) do get_value(s.attribute, attributes) - |> String.split(~r/\s+/) + |> String.split([" ", "\t"]) |> Enum.any?(fn v -> v == value end) end From 2b37c74d6db0786ac5122399e2178ea27e3f50e0 Mon Sep 17 00:00:00 2001 From: Yuri Pereira Constante Date: Thu, 21 Dec 2023 00:55:39 -0300 Subject: [PATCH 2/2] Add line break as separator --- lib/floki/selector.ex | 2 +- lib/floki/selector/attribute_selector.ex | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/floki/selector.ex b/lib/floki/selector.ex index 39fdecac..8d5f38af 100644 --- a/lib/floki/selector.ex +++ b/lib/floki/selector.ex @@ -144,7 +144,7 @@ defmodule Floki.Selector do defp do_classes_matches?(nil, _classes), do: false defp do_classes_matches?(class_attr_value, classes) do - classes -- String.split(class_attr_value, [" ", "\t"]) == [] + classes -- String.split(class_attr_value, [" ", "\t", "\n"]) == [] end defp attributes_matches?(_node, []), do: true diff --git a/lib/floki/selector/attribute_selector.ex b/lib/floki/selector/attribute_selector.ex index 7e1adb9a..70e8e049 100644 --- a/lib/floki/selector/attribute_selector.ex +++ b/lib/floki/selector/attribute_selector.ex @@ -63,7 +63,7 @@ defmodule Floki.Selector.AttributeSelector do s.attribute |> get_value(attributes) # Splits by whitespaces ("a b c" -> ["a", "b", "c"]) - |> String.split([" ", "\t"]) + |> String.split([" ", "\t", "\n"]) |> Enum.any?(fn v -> String.downcase(v) == selector_value end) end @@ -103,7 +103,7 @@ defmodule Floki.Selector.AttributeSelector do def match?(attributes, s = %AttributeSelector{match_type: :includes, value: value}) do get_value(s.attribute, attributes) - |> String.split([" ", "\t"]) + |> String.split([" ", "\t", "\n"]) |> Enum.any?(fn v -> v == value end) end