case-insensitive-1.2.0.3: 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
- class FoldCase s where
  - foldCase :: s -> s

# Documentation

data CI s

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

Eq s => Eq (CI s) |
Data s => Data (CI s) |
Ord s => Ord (CI s) |
(Read s, FoldCase s) => Read (CI s) |
Show s => Show (CI s) |
(IsString s, FoldCase s) => IsString (CI s) |
Monoid s => Monoid (CI s) |
NFData s => NFData (CI s) |
Hashable s => Hashable (CI s) |
FoldCase (CI s) |

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

Make the given string-like value case insensitive.

original :: CI s -> s

Retrieve the original string-like value.

foldedCase :: CI s -> s

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

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

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

class FoldCase s where

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

Instances

FoldCase Char |
FoldCase ByteString | Note that `foldCase` on ``ByteString`s` is only guaranteed to be correct for ISO-8859-1 encoded strings!
FoldCase ByteString | Note that `foldCase` on ``ByteString`s` is only guaranteed to be correct for ISO-8859-1 encoded strings!
FoldCase Text |
FoldCase Text |
FoldCase a => FoldCase [a] |
FoldCase (CI s) |