summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHélène <pleroma-dev@helene.moe>2022-07-26 23:15:09 +0200
committerHélène <pleroma-dev@helene.moe>2022-07-27 02:08:46 +0200
commit7167de592e3523459a1eb65d902085e828f962b2 (patch)
treef2bbf80f0df262147d82479d5ef35ddb11f1d70c
parentb99f5d61834ffd86f9e8aeca2b00c704f0a0467e (diff)
Emoji: apply recommended tail call changes
Behavior matches previous code. Co-authored-by: Tusooa Zhu <tusooa@kazv.moe>
-rw-r--r--lib/pleroma/emoji/combinations.ex22
1 files changed, 13 insertions, 9 deletions
diff --git a/lib/pleroma/emoji/combinations.ex b/lib/pleroma/emoji/combinations.ex
index c49466406..981c73596 100644
--- a/lib/pleroma/emoji/combinations.ex
+++ b/lib/pleroma/emoji/combinations.ex
@@ -13,18 +13,22 @@ defmodule Pleroma.Emoji.Combinations do
# the entire emoji list in emoji-test.txt. This is safe, and, sadly, most
# likely sane too.
- defp qualification_combinations([]), do: [[]]
+ defp qualification_combinations(codepoints) do
+ qualification_combinations([[]], codepoints)
+ end
- defp qualification_combinations(["\uFE0F" | tail]) do
- tail
- |> qualification_combinations()
- |> Enum.flat_map(fn x -> [x, ["\uFE0F" | x]] end)
+ defp qualification_combinations(acc, []), do: acc
+
+ defp qualification_combinations(acc, ["\uFE0F" | tail]) do
+ acc
+ |> Enum.flat_map(fn x -> [x, x ++ ["\uFE0F"]] end)
+ |> qualification_combinations(tail)
end
- defp qualification_combinations([codepoint | tail]) do
- tail
- |> qualification_combinations()
- |> Enum.map(fn x -> [codepoint | x] end)
+ defp qualification_combinations(acc, [codepoint | tail]) do
+ acc
+ |> Enum.map(&Kernel.++(&1, [codepoint]))
+ |> qualification_combinations(tail)
end
def variate_emoji_qualification(emoji) when is_binary(emoji) do