{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Data.BCP47.Internal.CIText
( CIText (..)
, fromText
, pack
, original
) where
import Data.CaseInsensitive (CI)
import qualified Data.CaseInsensitive as CI
import Data.String (IsString)
import Data.Text (Text)
import qualified Data.Text as T
newtype CIText = CIText
{ CIText -> CI Text
unCIText :: CI Text
}
deriving newtype (CIText -> CIText -> Bool
(CIText -> CIText -> Bool)
-> (CIText -> CIText -> Bool) -> Eq CIText
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: CIText -> CIText -> Bool
== :: CIText -> CIText -> Bool
$c/= :: CIText -> CIText -> Bool
/= :: CIText -> CIText -> Bool
Eq, Int -> CIText -> ShowS
[CIText] -> ShowS
CIText -> String
(Int -> CIText -> ShowS)
-> (CIText -> String) -> ([CIText] -> ShowS) -> Show CIText
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CIText -> ShowS
showsPrec :: Int -> CIText -> ShowS
$cshow :: CIText -> String
show :: CIText -> String
$cshowList :: [CIText] -> ShowS
showList :: [CIText] -> ShowS
Show, Eq CIText
Eq CIText =>
(CIText -> CIText -> Ordering)
-> (CIText -> CIText -> Bool)
-> (CIText -> CIText -> Bool)
-> (CIText -> CIText -> Bool)
-> (CIText -> CIText -> Bool)
-> (CIText -> CIText -> CIText)
-> (CIText -> CIText -> CIText)
-> Ord CIText
CIText -> CIText -> Bool
CIText -> CIText -> Ordering
CIText -> CIText -> CIText
forall a.
Eq a =>
(a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: CIText -> CIText -> Ordering
compare :: CIText -> CIText -> Ordering
$c< :: CIText -> CIText -> Bool
< :: CIText -> CIText -> Bool
$c<= :: CIText -> CIText -> Bool
<= :: CIText -> CIText -> Bool
$c> :: CIText -> CIText -> Bool
> :: CIText -> CIText -> Bool
$c>= :: CIText -> CIText -> Bool
>= :: CIText -> CIText -> Bool
$cmax :: CIText -> CIText -> CIText
max :: CIText -> CIText -> CIText
$cmin :: CIText -> CIText -> CIText
min :: CIText -> CIText -> CIText
Ord, String -> CIText
(String -> CIText) -> IsString CIText
forall a. (String -> a) -> IsString a
$cfromString :: String -> CIText
fromString :: String -> CIText
IsString)
fromText :: Text -> CIText
fromText :: Text -> CIText
fromText = CI Text -> CIText
CIText (CI Text -> CIText) -> (Text -> CI Text) -> Text -> CIText
forall b c a. (b -> c) -> (a -> b) -> a -> c
. Text -> CI Text
forall s. FoldCase s => s -> CI s
CI.mk
{-# INLINE fromText #-}
pack :: String -> CIText
pack :: String -> CIText
pack = Text -> CIText
fromText (Text -> CIText) -> (String -> Text) -> String -> CIText
forall b c a. (b -> c) -> (a -> b) -> a -> c
. String -> Text
T.pack
{-# INLINE pack #-}
original :: CIText -> Text
original :: CIText -> Text
original = CI Text -> Text
forall s. CI s -> s
CI.original (CI Text -> Text) -> (CIText -> CI Text) -> CIText -> Text
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CIText -> CI Text
unCIText
{-# INLINE original #-}