logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git
commit: 7167de592e3523459a1eb65d902085e828f962b2
parent b99f5d61834ffd86f9e8aeca2b00c704f0a0467e
Author: Hélène <pleroma-dev@helene.moe>
Date:   Tue, 26 Jul 2022 23:15:09 +0200

Emoji: apply recommended tail call changes

Behavior matches previous code.

Co-authored-by: Tusooa Zhu <tusooa@kazv.moe>

Diffstat:

Mlib/pleroma/emoji/combinations.ex22+++++++++++++---------
1 file changed, 13 insertions(+), 9 deletions(-)

diff --git 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