-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathNormalize.hs
More file actions
40 lines (37 loc) · 1.01 KB
/
Normalize.hs
File metadata and controls
40 lines (37 loc) · 1.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
-- {-# OPTIONS_GHC -funfolding-fun-discount=90 #-}
-- |
-- Module : Data.Text.Normalize
-- Copyright : (c) 2016 Harendra Kumar
--
-- License : BSD-3-Clause
-- Maintainer : harendra.kumar@gmail.com
-- Stability : experimental
-- Portability : GHC
--
-- Unicode normalization for @Text@ data type.
--
module Data.Text.Normalize
(
-- * Normalization Modes
NormalizationMode(..)
-- * Normalization API
, normalize
) where
import Data.Text (Text)
import Data.Unicode.Types (NormalizationMode(..))
-- Internal modules
import Data.Unicode.Internal.NormalizeStream
( DecomposeMode(..)
, stream
, unstreamD
, unstreamC
)
-- | Perform Unicode normalization on @Text@ according to the specified
-- normalization mode.
normalize :: NormalizationMode -> Text -> Text
normalize mode =
case mode of
NFD -> (unstreamD Canonical) . stream
NFKD -> (unstreamD Kompat) . stream
NFC -> (unstreamC Canonical) . stream
NFKC -> (unstreamC Kompat) . stream