Emoji: Only accept RGI emoji.
authorlain <lain@soykaf.club>
Wed, 2 Dec 2020 15:46:19 +0000 (16:46 +0100)
committerlain <lain@soykaf.club>
Wed, 2 Dec 2020 15:46:19 +0000 (16:46 +0100)
"recommended for general interchange"

lib/pleroma/emoji.ex
test/pleroma/emoji_test.exs

index 98644f84e5f195cab27e4175af0c7cc7fac96426..201212779793f2cba1c5ad6899bbd4658a814613 100644 (file)
@@ -108,7 +108,10 @@ defmodule Pleroma.Emoji do
     @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)
index 3070fb19f73220b6685a654fa379c291262a46f0..97af252808434e773f9be1a253e21da27aa18c89 100644 (file)
@@ -11,7 +11,11 @@ defmodule Pleroma.EmojiTest do
       refute Emoji.is_unicode_emoji?("X")
       refute Emoji.is_unicode_emoji?("ね")
 
-      assert Emoji.is_unicode_emoji?("☂")
+      # Only accept fully-qualified (RGI) emoji
+      # See http://www.unicode.org/reports/tr51/
+      refute Emoji.is_unicode_emoji?("❤")
+      refute Emoji.is_unicode_emoji?("☂")
+
       assert Emoji.is_unicode_emoji?("🥺")
       assert Emoji.is_unicode_emoji?("🤰")
       assert Emoji.is_unicode_emoji?("❤️")