11{-# LANGUAGE CPP #-}
22
33-- |
4- -- Module : Unicode.Char.General
4+ -- Module : Unicode.Char.General.Scripts
55-- Copyright : (c) 2020 Composewell Technologies and Contributors
66-- License : Apache-2.0
77-- Maintainer : streamly@composewell.com
88-- Stability : experimental
99--
10- -- Unicode scripts related functions.
10+ -- Unicode [ scripts](https://www.unicode.org/reports/tr24/) related functions.
1111--
1212-- @since 0.1.0
1313--
1414
1515module Unicode.Char.General.Scripts
1616 ( S. Script (.. )
1717 , script
18+ , scriptExtensions
1819 , scriptDefinition
1920 )
2021where
2122
2223import Data.Char (chr )
24+ import Data.List.NonEmpty (NonEmpty )
2325import GHC.Exts
2426 (Ptr (.. ), Char (.. ), Int (.. ),
2527 indexWord32OffAddr #, word2Int #,
@@ -32,8 +34,9 @@ import GHC.Exts (byteSwap32#)
3234#endif
3335
3436import qualified Unicode.Internal.Char.Scripts as S
37+ import qualified Unicode.Internal.Char.ScriptExtensions as S
3538
36- -- | Character script.
39+ -- | Character [ script](https://www.unicode.org/reports/tr24/) .
3740--
3841-- @since 0.1.0
3942{-# INLINE script #-}
@@ -82,3 +85,11 @@ scriptDefinition = unpack . S.scriptDefinition
8285 } in addRange (k# -# 2 # ) acc'
8386 else addRange (k# -# 1 # ) (C # (chr# c1# ) : acc)
8487 } in addRange (n# -# 1 # ) mempty
88+
89+ -- | Character
90+ -- [script extensions](https://www.unicode.org/reports/tr24/#Script_Extensions).
91+ --
92+ -- @since 0.1.0
93+ {-# INLINE scriptExtensions #-}
94+ scriptExtensions :: Char -> NonEmpty S. Script
95+ scriptExtensions = S. decodeScriptExtensions . S. scriptExtensions
0 commit comments