summaryrefslogtreecommitdiff
path: root/lib/pleroma/emoji.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma/emoji.ex')
-rw-r--r--lib/pleroma/emoji.ex31
1 files changed, 18 insertions, 13 deletions
diff --git a/lib/pleroma/emoji.ex b/lib/pleroma/emoji.ex
index 04936155b..f077fe5b4 100644
--- a/lib/pleroma/emoji.ex
+++ b/lib/pleroma/emoji.ex
@@ -1,5 +1,5 @@
# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Emoji do
@@ -102,31 +102,36 @@ defmodule Pleroma.Emoji do
:ets.insert(@ets, emojis)
end
- @external_resource "lib/pleroma/emoji-data.txt"
+ @external_resource "lib/pleroma/emoji-test.txt"
+
+ regional_indicators =
+ Enum.map(127_462..127_487, fn codepoint ->
+ <<codepoint::utf8>>
+ end)
emojis =
@external_resource
|> File.read!()
|> String.split("\n")
- |> Enum.filter(fn line -> line != "" and not String.starts_with?(line, "#") end)
+ |> Enum.filter(fn line ->
+ line != "" and not String.starts_with?(line, "#") and
+ String.contains?(line, "fully-qualified")
+ end)
|> Enum.map(fn line ->
line
|> String.split(";", parts: 2)
|> hd()
|> String.trim()
- |> String.split("..")
- |> case do
- [number] ->
- <<String.to_integer(number, 16)::utf8>>
-
- [first, last] ->
- String.to_integer(first, 16)..String.to_integer(last, 16)
- |> Enum.map(&<<&1::utf8>>)
- end
+ |> String.split()
+ |> Enum.map(fn codepoint ->
+ <<String.to_integer(codepoint, 16)::utf8>>
+ end)
+ |> Enum.join()
end)
- |> List.flatten()
|> Enum.uniq()
+ emojis = emojis ++ regional_indicators
+
for emoji <- emojis do
def is_unicode_emoji?(unquote(emoji)), do: true
end