idna2008-1.0.0.0: internal/Text/IDNA2008/Internal/NFC/Data.hs
-- |
-- Module : Text.IDNA2008.Internal.NFC.Data
-- Description : Codepoint range tables for the Unicode
-- @NFC_Quick_Check@ property values @No@ and
-- @Maybe@.
-- 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/genIdnaNFC.py <unicode-version> \\
-- <DerivedNormalizationProps.txt>
--
-- Source: https://www.unicode.org/Public/17.0.0/ucd/DerivedNormalizationProps.txt
-- Aligned with: Unicode 17.0.0
-- NFC_QC=No ranges: 73
-- NFC_QC=Maybe ranges: 49
--
-- Codepoints absent from both tables are implicitly @Yes@
-- (already in NFC).
module Text.IDNA2008.Internal.NFC.Data
( nfcNoRangeCount
, nfcNoRanges
, nfcMaybeRangeCount
, nfcMaybeRanges
) where
import Data.Array.Byte (ByteArray)
import Data.Word (Word32)
import qualified Data.Primitive.ByteArray as PBA
----------------------------------------------------------------------
-- NFC_Quick_Check = No
----------------------------------------------------------------------
-- | Number of (start, end) range pairs in 'nfcNoRanges'.
nfcNoRangeCount :: Int
nfcNoRangeCount = 73
-- | Codepoint ranges with @NFC_Quick_Check = No@,
-- alternating start\/end @Word32@ pairs.
nfcNoRanges :: ByteArray
nfcNoRanges = PBA.byteArrayFromList
[ (0x000340 :: Word32)
, 0x000341
, 0x000343
, 0x000344
, 0x000374
, 0x000374
, 0x00037E
, 0x00037E
, 0x000387
, 0x000387
, 0x000958
, 0x00095F
, 0x0009DC
, 0x0009DD
, 0x0009DF
, 0x0009DF
, 0x000A33
, 0x000A33
, 0x000A36
, 0x000A36
, 0x000A59
, 0x000A5B
, 0x000A5E
, 0x000A5E
, 0x000B5C
, 0x000B5D
, 0x000F43
, 0x000F43
, 0x000F4D
, 0x000F4D
, 0x000F52
, 0x000F52
, 0x000F57
, 0x000F57
, 0x000F5C
, 0x000F5C
, 0x000F69
, 0x000F69
, 0x000F73
, 0x000F73
, 0x000F75
, 0x000F76
, 0x000F78
, 0x000F78
, 0x000F81
, 0x000F81
, 0x000F93
, 0x000F93
, 0x000F9D
, 0x000F9D
, 0x000FA2
, 0x000FA2
, 0x000FA7
, 0x000FA7
, 0x000FAC
, 0x000FAC
, 0x000FB9
, 0x000FB9
, 0x001F71
, 0x001F71
, 0x001F73
, 0x001F73
, 0x001F75
, 0x001F75
, 0x001F77
, 0x001F77
, 0x001F79
, 0x001F79
, 0x001F7B
, 0x001F7B
, 0x001F7D
, 0x001F7D
, 0x001FBB
, 0x001FBB
, 0x001FBE
, 0x001FBE
, 0x001FC9
, 0x001FC9
, 0x001FCB
, 0x001FCB
, 0x001FD3
, 0x001FD3
, 0x001FDB
, 0x001FDB
, 0x001FE3
, 0x001FE3
, 0x001FEB
, 0x001FEB
, 0x001FEE
, 0x001FEF
, 0x001FF9
, 0x001FF9
, 0x001FFB
, 0x001FFB
, 0x001FFD
, 0x001FFD
, 0x002000
, 0x002001
, 0x002126
, 0x002126
, 0x00212A
, 0x00212B
, 0x002329
, 0x00232A
, 0x002ADC
, 0x002ADC
, 0x00F900
, 0x00FA0D
, 0x00FA10
, 0x00FA10
, 0x00FA12
, 0x00FA12
, 0x00FA15
, 0x00FA1E
, 0x00FA20
, 0x00FA20
, 0x00FA22
, 0x00FA22
, 0x00FA25
, 0x00FA26
, 0x00FA2A
, 0x00FA6D
, 0x00FA70
, 0x00FAD9
, 0x00FB1D
, 0x00FB1D
, 0x00FB1F
, 0x00FB1F
, 0x00FB2A
, 0x00FB36
, 0x00FB38
, 0x00FB3C
, 0x00FB3E
, 0x00FB3E
, 0x00FB40
, 0x00FB41
, 0x00FB43
, 0x00FB44
, 0x00FB46
, 0x00FB4E
, 0x01D15E
, 0x01D164
, 0x01D1BB
, 0x01D1C0
, 0x02F800
, 0x02FA1D
]
----------------------------------------------------------------------
-- NFC_Quick_Check = Maybe
----------------------------------------------------------------------
-- | Number of (start, end) range pairs in 'nfcMaybeRanges'.
nfcMaybeRangeCount :: Int
nfcMaybeRangeCount = 49
-- | Codepoint ranges with @NFC_Quick_Check = Maybe@,
-- alternating start\/end @Word32@ pairs.
nfcMaybeRanges :: ByteArray
nfcMaybeRanges = PBA.byteArrayFromList
[ (0x000300 :: Word32)
, 0x000304
, 0x000306
, 0x00030C
, 0x00030F
, 0x00030F
, 0x000311
, 0x000311
, 0x000313
, 0x000314
, 0x00031B
, 0x00031B
, 0x000323
, 0x000328
, 0x00032D
, 0x00032E
, 0x000330
, 0x000331
, 0x000338
, 0x000338
, 0x000342
, 0x000342
, 0x000345
, 0x000345
, 0x000653
, 0x000655
, 0x00093C
, 0x00093C
, 0x0009BE
, 0x0009BE
, 0x0009D7
, 0x0009D7
, 0x000B3E
, 0x000B3E
, 0x000B56
, 0x000B57
, 0x000BBE
, 0x000BBE
, 0x000BD7
, 0x000BD7
, 0x000C56
, 0x000C56
, 0x000CC2
, 0x000CC2
, 0x000CD5
, 0x000CD6
, 0x000D3E
, 0x000D3E
, 0x000D57
, 0x000D57
, 0x000DCA
, 0x000DCA
, 0x000DCF
, 0x000DCF
, 0x000DDF
, 0x000DDF
, 0x00102E
, 0x00102E
, 0x001161
, 0x001175
, 0x0011A8
, 0x0011C2
, 0x001B35
, 0x001B35
, 0x003099
, 0x00309A
, 0x0110BA
, 0x0110BA
, 0x011127
, 0x011127
, 0x01133E
, 0x01133E
, 0x011357
, 0x011357
, 0x0113B8
, 0x0113B8
, 0x0113BB
, 0x0113BB
, 0x0113C2
, 0x0113C2
, 0x0113C5
, 0x0113C5
, 0x0113C7
, 0x0113C9
, 0x0114B0
, 0x0114B0
, 0x0114BA
, 0x0114BA
, 0x0114BD
, 0x0114BD
, 0x0115AF
, 0x0115AF
, 0x011930
, 0x011930
, 0x01611E
, 0x016129
, 0x016D67
, 0x016D68
]