case-insensitive-1.2.1.0: Case insensitive string comparison

Copyright | (c) 2011-2013 Bas van Dijk
License | BSD-style (see the file LICENSE)
Maintainer | Bas van Dijk <v.dijk.bas@gmail.com>
Safe Haskell | Trustworthy
Language | Haskell98

Data.CaseInsensitive

Description

This module is intended to be imported qualified. May I suggest:

    import           Data.CaseInsensitive  ( CI )
    import qualified Data.CaseInsensitive as CI

Note that the FoldCase instance for ByteStrings is only guaranteed to be correct for ISO-8859-1 encoded strings!

Synopsis

- data CI s
- mk :: FoldCase s => s -> CI s
- original :: CI s -> s
- foldedCase :: CI s -> s
- map :: FoldCase s2 => (s1 -> s2) -> CI s1 -> CI s2
- traverse :: (FoldCase s2, Applicative f) => (s1 -> f s2) -> CI s1 -> f (CI s2)
- class FoldCase s where
  - foldCase :: s -> s

# 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

FoldCase (CI s) Source # |
Instance details Defined in Data.CaseInsensitive.Internal Methods foldCase :: CI s -> CI s Source # foldCaseList :: [CI s] -> [CI s]
NFData s => NFData (CI s) Source # |
Instance details Defined in Data.CaseInsensitive.Internal Methods rnf :: 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 #
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 #
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 #

(IsString s, FoldCase s) => IsString (CI s) Source # |
Instance details Defined in Data.CaseInsensitive.Internal Methods fromString :: String -> CI s Source #
(Read s, FoldCase s) => Read (CI s) Source # |
Instance details Defined in Data.CaseInsensitive.Internal Methods readsPrec :: Int -> ReadS (CI s) Source # readList :: ReadS [CI s] Source # readPrec :: ReadPrec (CI s) Source # readListPrec :: ReadPrec [CI s] Source #
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 #
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 #
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 #
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 #

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

Make the given string-like value case insensitive.

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 ByteString Source # | Note that `foldCase` on ``ByteString`s` is only guaranteed to be correct for ISO-8859-1 encoded strings!
Instance details Defined in Data.CaseInsensitive.Internal Methods foldCase :: ByteString -> ByteString Source # foldCaseList :: [ByteString] -> [ByteString]
FoldCase ByteString Source # | Note that `foldCase` on ``ByteString`s` is only guaranteed to be correct for ISO-8859-1 encoded strings!
Instance details Defined in Data.CaseInsensitive.Internal Methods foldCase :: ByteString -> ByteString Source # foldCaseList :: [ByteString] -> [ByteString]
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 Char Source # |
Instance details Defined in Data.CaseInsensitive.Internal Methods foldCase :: Char -> Char Source # foldCaseList :: [Char] -> [Char]
FoldCase (CI s) Source # |
Instance details Defined in Data.CaseInsensitive.Internal Methods foldCase :: CI s -> CI s Source # foldCaseList :: [CI s] -> [CI s]
FoldCase a => FoldCase [a] Source # |
Instance details Defined in Data.CaseInsensitive.Internal Methods foldCase :: [a] -> [a] Source # foldCaseList :: [[a]] -> [[a]]