Skip to content

Commit

Permalink
Fix emoji categories
Browse files Browse the repository at this point in the history
  • Loading branch information
kipcole9 committed Feb 29, 2024
1 parent e9e613c commit f472e6e
Show file tree
Hide file tree
Showing 4 changed files with 24 additions and 3 deletions.
4 changes: 3 additions & 1 deletion lib/unicode/emoji.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ defmodule Unicode.Emoji do
alias Unicode.{Utils, Property}

@emoji Utils.emoji()
|> Utils.remove_reserved_codepoints()
|> Utils.remove_annotations()

def emoji do
Expand All @@ -22,6 +21,9 @@ defmodule Unicode.Emoji do
|> Enum.reduce(0, fn {from, to}, acc -> acc + to - from + 1 end)
end

# FIXME This is not correct - if a codepoint has more than one
# emoji category, only the first is retained.

for {emoji_category, ranges} <- @emoji,
range <- ranges do
case range do
Expand Down
7 changes: 5 additions & 2 deletions lib/unicode/property.ex
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,11 @@ defmodule Unicode.Property do
@properties Utils.properties()
|> Utils.remove_annotations()

@all_properties @derived_properties
|> Map.merge(@properties)
@all_and_derived_properties @properties
|> Map.merge(@derived_properties)


@all_properties @all_and_derived_properties
|> Map.merge(Emoji.emoji())

@doc """
Expand Down
4 changes: 4 additions & 0 deletions lib/utils.ex
Original file line number Diff line number Diff line change
Expand Up @@ -736,6 +736,10 @@ defmodule Unicode.Utils do
key
end

# FIXME this is incorrect since a codepoint
# range may have several annotations and this
# algorithm will delete the whole range.

@doc false
@reserved "<reserved"
def remove_reserved_codepoints(data) do
Expand Down
12 changes: 12 additions & 0 deletions test/property_test.exs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
defmodule Unicode.Property.Test do
use ExUnit.Case, async: true

test "Emojis have all their properties" do
assert Unicode.properties(128721) ==
[:emoji, :emoji_presentation, :extended_pictographic, :grapheme_base]

assert Unicode.properties("🛑") ==
[[:emoji, :emoji_presentation, :extended_pictographic, :grapheme_base]]
end

end

0 comments on commit f472e6e

Please sign in to comment.