case-insensitive-1.2.1.0: Case insensitive string comparison
Copyright(c) 2011-2013 Bas van Dijk
LicenseBSD-style (see the file LICENSE)
MaintainerBas van Dijk <v.dijk.bas@gmail.com>
Safe HaskellUnsafe
LanguageHaskell98

Data.CaseInsensitive.Internal

Description

Internal module which exports the CI type, constructor, associated instances and the FoldCase class and instances.

Synopsis

Documentation

data CI s Source #

A CI s provides Case Insensitive comparison for the string-like type s (for example: String, Text, ByteString, etc.).

Note that CI s has an instance for IsString which together with the OverloadedStrings language extension allows you to write case insensitive string literals as in:

> ("Content-Type" :: CI Text) == ("CONTENT-TYPE" :: CI Text)
True

Instances

Instances details
Eq s => Eq (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

(==) :: CI s -> CI s -> Bool Source #

(/=) :: CI s -> CI s -> Bool Source #

Data s => Data (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> CI s -> c (CI s) Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (CI s) Source #

toConstr :: CI s -> Constr Source #

dataTypeOf :: CI s -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (CI s)) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (CI s)) Source #

gmapT :: (forall b. Data b => b -> b) -> CI s -> CI s Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> CI s -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> CI s -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> CI s -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> CI s -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> CI s -> m (CI s) Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> CI s -> m (CI s) Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> CI s -> m (CI s) Source #

Ord s => Ord (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

compare :: CI s -> CI s -> Ordering Source #

(<) :: CI s -> CI s -> Bool Source #

(<=) :: CI s -> CI s -> Bool Source #

(>) :: CI s -> CI s -> Bool Source #

(>=) :: CI s -> CI s -> Bool Source #

max :: CI s -> CI s -> CI s Source #

min :: CI s -> CI s -> CI s Source #

(Read s, FoldCase s) => Read (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Show s => Show (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

showsPrec :: Int -> CI s -> ShowS Source #

show :: CI s -> String Source #

showList :: [CI s] -> ShowS Source #

(IsString s, FoldCase s) => IsString (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

fromString :: String -> CI s Source #

Semigroup s => Semigroup (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

(<>) :: CI s -> CI s -> CI s Source #

sconcat :: NonEmpty (CI s) -> CI s Source #

stimes :: Integral b => b -> CI s -> CI s Source #

Monoid s => Monoid (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

mempty :: CI s Source #

mappend :: CI s -> CI s -> CI s Source #

mconcat :: [CI s] -> CI s Source #

NFData s => NFData (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

rnf :: CI s -> () Source #

Hashable s => Hashable (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

hashWithSalt :: Int -> CI s -> Int Source #

hash :: CI s -> Int Source #

FoldCase (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

foldCase :: CI s -> CI s Source #

foldCaseList :: [CI s] -> [CI s]

mk :: FoldCase s => s -> CI s Source #

Make the given string-like value case insensitive.

unsafeMk :: FoldCase s => s -> CI s Source #

Constructs a CI from an already case folded string-like value. The given string is used both as the original as well as the foldedCase.

This function is unsafe since the compiler can't guarantee that the provided string is case folded.

original :: CI s -> s Source #

Retrieve the original string-like value.

foldedCase :: CI s -> s Source #

Retrieve the case folded string-like value. (Also see foldCase).

map :: FoldCase s2 => (s1 -> s2) -> CI s1 -> CI s2 Source #

Transform the original string-like value but keep it case insensitive.

traverse :: (FoldCase s2, Applicative f) => (s1 -> f s2) -> CI s1 -> f (CI s2) Source #

Transform the original string-like value but keep it case insensitive.

class FoldCase s where Source #

Class of string-like types that support folding cases.

Note: In some languages, case conversion is a locale- and context-dependent operation. The foldCase method is not intended to be locale sensitive. Programs that require locale sensitivity should use appropriate versions of the case mapping functions from the text-icu package: http://hackage.haskell.org/package/text-icu

Methods

foldCase :: s -> s Source #

Instances

Instances details
FoldCase Char Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

foldCase :: Char -> Char Source #

foldCaseList :: [Char] -> [Char]

FoldCase ByteString Source #

Note that foldCase on ByteStrings is only guaranteed to be correct for ISO-8859-1 encoded strings!

Instance details

Defined in Data.CaseInsensitive.Internal

FoldCase ByteString Source #

Note that foldCase on ByteStrings is only guaranteed to be correct for ISO-8859-1 encoded strings!

Instance details

Defined in Data.CaseInsensitive.Internal

FoldCase Text Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

foldCase :: Text -> Text Source #

foldCaseList :: [Text] -> [Text]

FoldCase Text Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

foldCase :: Text -> Text Source #

foldCaseList :: [Text] -> [Text]

FoldCase a => FoldCase [a] Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

foldCase :: [a] -> [a] Source #

foldCaseList :: [[a]] -> [[a]]

FoldCase (CI s) Source # 
Instance details

Defined in Data.CaseInsensitive.Internal

Methods

foldCase :: CI s -> CI s Source #

foldCaseList :: [CI s] -> [CI s]