packages feed

idna2008-1.0.0.0: internal/Text/IDNA2008/Internal/Emoji/Data.hs

-- |
-- Module      : Text.IDNA2008.Internal.Emoji.Data
-- Description : Compact codepoint range tables for the Unicode
--               @Emoji@ property and its UTS #46-mapped subset.
-- Copyright   : (c) Viktor Dukhovni, 2026
-- License     : BSD-3-Clause
--
-- Maintainer  : ietf-dane@dukhovni.org
-- Stability   : unstable
--
-- AUTOMATICALLY GENERATED.  Do not edit by hand.  Regenerate with:
--
--   python3 internal/tools/genIdnaEmoji.py <unicode-version> \\
--           <emoji-data.txt> <IdnaMappingTable.txt>
--
-- Source (Unicode 12.0): https://www.unicode.org/Public/emoji/12.0/emoji-data.txt
-- Source (Unicode 13.0+): https://www.unicode.org/Public/17.0.0/ucd/emoji/emoji-data.txt
-- Source (Unicode 17.0+, idna): https://www.unicode.org/Public/17.0.0/idna/IdnaMappingTable.txt
-- Aligned with: Unicode 17.0.0
-- Emoji ranges: 151
-- Mapped-emoji ranges: 12
--
-- Two range tables, both with the same @Word32@ start\/end layout
-- (sorted by start, abutting ranges coalesced):
--
--   * 'emojiRanges' -- codepoints with Unicode property @Emoji=Yes@.
--
--   * 'mappedEmojiRanges' -- the subset of 'emojiRanges' whose
--     UTS #46 status is @mapped@; cross-tool ambiguous.
--
-- Both tables feed the @EMOJIOK@ relaxation in
-- "Text.IDNA2008.Internal.Parse"; see the @EMOJIOK@ pattern in
-- "Text.IDNA2008.Internal.Flags" for the policy rationale.
module Text.IDNA2008.Internal.Emoji.Data
    ( emojiRangeCount
    , emojiRanges
    , mappedEmojiRangeCount
    , mappedEmojiRanges
    ) where

import Data.Array.Byte (ByteArray)
import Data.Word (Word32)
import qualified Data.Primitive.ByteArray as PBA

-- | Number of (start, end) range pairs in 'emojiRanges'.
emojiRangeCount :: Int
emojiRangeCount = 151

-- | Codepoints with Unicode @Emoji=Yes@, alternating
-- start\/end.
emojiRanges :: ByteArray
emojiRanges = PBA.byteArrayFromList
    [ (0x000023 :: Word32)
    , 0x000023
    , 0x00002A
    , 0x00002A
    , 0x000030
    , 0x000039
    , 0x0000A9
    , 0x0000A9
    , 0x0000AE
    , 0x0000AE
    , 0x00203C
    , 0x00203C
    , 0x002049
    , 0x002049
    , 0x002122
    , 0x002122
    , 0x002139
    , 0x002139
    , 0x002194
    , 0x002199
    , 0x0021A9
    , 0x0021AA
    , 0x00231A
    , 0x00231B
    , 0x002328
    , 0x002328
    , 0x0023CF
    , 0x0023CF
    , 0x0023E9
    , 0x0023F3
    , 0x0023F8
    , 0x0023FA
    , 0x0024C2
    , 0x0024C2
    , 0x0025AA
    , 0x0025AB
    , 0x0025B6
    , 0x0025B6
    , 0x0025C0
    , 0x0025C0
    , 0x0025FB
    , 0x0025FE
    , 0x002600
    , 0x002604
    , 0x00260E
    , 0x00260E
    , 0x002611
    , 0x002611
    , 0x002614
    , 0x002615
    , 0x002618
    , 0x002618
    , 0x00261D
    , 0x00261D
    , 0x002620
    , 0x002620
    , 0x002622
    , 0x002623
    , 0x002626
    , 0x002626
    , 0x00262A
    , 0x00262A
    , 0x00262E
    , 0x00262F
    , 0x002638
    , 0x00263A
    , 0x002640
    , 0x002640
    , 0x002642
    , 0x002642
    , 0x002648
    , 0x002653
    , 0x00265F
    , 0x002660
    , 0x002663
    , 0x002663
    , 0x002665
    , 0x002666
    , 0x002668
    , 0x002668
    , 0x00267B
    , 0x00267B
    , 0x00267E
    , 0x00267F
    , 0x002692
    , 0x002697
    , 0x002699
    , 0x002699
    , 0x00269B
    , 0x00269C
    , 0x0026A0
    , 0x0026A1
    , 0x0026A7
    , 0x0026A7
    , 0x0026AA
    , 0x0026AB
    , 0x0026B0
    , 0x0026B1
    , 0x0026BD
    , 0x0026BE
    , 0x0026C4
    , 0x0026C5
    , 0x0026C8
    , 0x0026C8
    , 0x0026CE
    , 0x0026CF
    , 0x0026D1
    , 0x0026D1
    , 0x0026D3
    , 0x0026D4
    , 0x0026E9
    , 0x0026EA
    , 0x0026F0
    , 0x0026F5
    , 0x0026F7
    , 0x0026FA
    , 0x0026FD
    , 0x0026FD
    , 0x002702
    , 0x002702
    , 0x002705
    , 0x002705
    , 0x002708
    , 0x00270D
    , 0x00270F
    , 0x00270F
    , 0x002712
    , 0x002712
    , 0x002714
    , 0x002714
    , 0x002716
    , 0x002716
    , 0x00271D
    , 0x00271D
    , 0x002721
    , 0x002721
    , 0x002728
    , 0x002728
    , 0x002733
    , 0x002734
    , 0x002744
    , 0x002744
    , 0x002747
    , 0x002747
    , 0x00274C
    , 0x00274C
    , 0x00274E
    , 0x00274E
    , 0x002753
    , 0x002755
    , 0x002757
    , 0x002757
    , 0x002763
    , 0x002764
    , 0x002795
    , 0x002797
    , 0x0027A1
    , 0x0027A1
    , 0x0027B0
    , 0x0027B0
    , 0x0027BF
    , 0x0027BF
    , 0x002934
    , 0x002935
    , 0x002B05
    , 0x002B07
    , 0x002B1B
    , 0x002B1C
    , 0x002B50
    , 0x002B50
    , 0x002B55
    , 0x002B55
    , 0x003030
    , 0x003030
    , 0x00303D
    , 0x00303D
    , 0x003297
    , 0x003297
    , 0x003299
    , 0x003299
    , 0x01F004
    , 0x01F004
    , 0x01F0CF
    , 0x01F0CF
    , 0x01F170
    , 0x01F171
    , 0x01F17E
    , 0x01F17F
    , 0x01F18E
    , 0x01F18E
    , 0x01F191
    , 0x01F19A
    , 0x01F1E6
    , 0x01F1FF
    , 0x01F201
    , 0x01F202
    , 0x01F21A
    , 0x01F21A
    , 0x01F22F
    , 0x01F22F
    , 0x01F232
    , 0x01F23A
    , 0x01F250
    , 0x01F251
    , 0x01F300
    , 0x01F321
    , 0x01F324
    , 0x01F393
    , 0x01F396
    , 0x01F397
    , 0x01F399
    , 0x01F39B
    , 0x01F39E
    , 0x01F3F0
    , 0x01F3F3
    , 0x01F3F5
    , 0x01F3F7
    , 0x01F4FD
    , 0x01F4FF
    , 0x01F53D
    , 0x01F549
    , 0x01F54E
    , 0x01F550
    , 0x01F567
    , 0x01F56F
    , 0x01F570
    , 0x01F573
    , 0x01F57A
    , 0x01F587
    , 0x01F587
    , 0x01F58A
    , 0x01F58D
    , 0x01F590
    , 0x01F590
    , 0x01F595
    , 0x01F596
    , 0x01F5A4
    , 0x01F5A5
    , 0x01F5A8
    , 0x01F5A8
    , 0x01F5B1
    , 0x01F5B2
    , 0x01F5BC
    , 0x01F5BC
    , 0x01F5C2
    , 0x01F5C4
    , 0x01F5D1
    , 0x01F5D3
    , 0x01F5DC
    , 0x01F5DE
    , 0x01F5E1
    , 0x01F5E1
    , 0x01F5E3
    , 0x01F5E3
    , 0x01F5E8
    , 0x01F5E8
    , 0x01F5EF
    , 0x01F5EF
    , 0x01F5F3
    , 0x01F5F3
    , 0x01F5FA
    , 0x01F64F
    , 0x01F680
    , 0x01F6C5
    , 0x01F6CB
    , 0x01F6D2
    , 0x01F6D5
    , 0x01F6D8
    , 0x01F6DC
    , 0x01F6E5
    , 0x01F6E9
    , 0x01F6E9
    , 0x01F6EB
    , 0x01F6EC
    , 0x01F6F0
    , 0x01F6F0
    , 0x01F6F3
    , 0x01F6FC
    , 0x01F7E0
    , 0x01F7EB
    , 0x01F7F0
    , 0x01F7F0
    , 0x01F90C
    , 0x01F93A
    , 0x01F93C
    , 0x01F945
    , 0x01F947
    , 0x01F9FF
    , 0x01FA70
    , 0x01FA7C
    , 0x01FA80
    , 0x01FA8A
    , 0x01FA8E
    , 0x01FAC6
    , 0x01FAC8
    , 0x01FAC8
    , 0x01FACD
    , 0x01FADC
    , 0x01FADF
    , 0x01FAEA
    , 0x01FAEF
    , 0x01FAF8
    ]

-- | Number of (start, end) range pairs in
-- 'mappedEmojiRanges'.
mappedEmojiRangeCount :: Int
mappedEmojiRangeCount = 12

-- | Subset of 'emojiRanges' whose UTS #46 status is
-- @mapped@, alternating start\/end.  Excluded from
-- the @EMOJIOK@ relaxation; see module haddock for
-- the rationale.
mappedEmojiRanges :: ByteArray
mappedEmojiRanges = PBA.byteArrayFromList
    [ (0x00203C :: Word32)
    , 0x00203C
    , 0x002049
    , 0x002049
    , 0x002122
    , 0x002122
    , 0x002139
    , 0x002139
    , 0x0024C2
    , 0x0024C2
    , 0x003297
    , 0x003297
    , 0x003299
    , 0x003299
    , 0x01F201
    , 0x01F202
    , 0x01F21A
    , 0x01F21A
    , 0x01F22F
    , 0x01F22F
    , 0x01F232
    , 0x01F23A
    , 0x01F250
    , 0x01F251
    ]