case-insensitive-match-0.1.0.0: A simplified, faster way to do case-insensitive matching.

Safe HaskellSafe
LanguageHaskell2010

Data.CaseInsensitive.Eq

Description

This, like most other case-insensitive matching algorithms, is an over-simplification. For some complex Q&A about properties like case, see http://unicode.org/faq/casemap_charprop.html. A round-trip case-conversion does not necessarily result in the original character(s) in some scripts. Also, string matching is not necessarily the same as character matching. The char-at-a-time approach taken here is not technically correct, but works for the most scripts, and definitely for ASCII and the ISO-8859-1 8-bit Latin 1 character set.

Usage is simple:

main = putStrLn $ if "HREF" ^== "href" then "match" else "no match"

Synopsis

Documentation

class CaseInsensitiveEq a where Source #

Minimal complete definition

caseInsensitiveEq

Methods

caseInsensitiveEq :: a -> a -> Bool Source #

caseInsensitiveMatch :: [a] -> [a] -> Bool Source #

Instances

CaseInsensitiveEq Char Source # 
CaseInsensitiveEq Word8 Source # 
CaseInsensitiveEq ByteString Source # 
CaseInsensitiveEq ByteString Source # 
CaseInsensitiveEq Text Source # 
CaseInsensitiveEq Text Source # 
CaseInsensitiveEq a => CaseInsensitiveEq [a] Source # 

Methods

caseInsensitiveEq :: [a] -> [a] -> Bool Source #

caseInsensitiveMatch :: [[a]] -> [[a]] -> Bool Source #

(CaseInsensitiveEq a, CaseInsensitiveEq b) => CaseInsensitiveEq (a, b) Source # 

Methods

caseInsensitiveEq :: (a, b) -> (a, b) -> Bool Source #

caseInsensitiveMatch :: [(a, b)] -> [(a, b)] -> Bool Source #

(CaseInsensitiveEq a, CaseInsensitiveEq b, CaseInsensitiveEq c) => CaseInsensitiveEq (a, b, c) Source # 

Methods

caseInsensitiveEq :: (a, b, c) -> (a, b, c) -> Bool Source #

caseInsensitiveMatch :: [(a, b, c)] -> [(a, b, c)] -> Bool Source #

(CaseInsensitiveEq a, CaseInsensitiveEq b, CaseInsensitiveEq c, CaseInsensitiveEq d) => CaseInsensitiveEq (a, b, c, d) Source # 

Methods

caseInsensitiveEq :: (a, b, c, d) -> (a, b, c, d) -> Bool Source #

caseInsensitiveMatch :: [(a, b, c, d)] -> [(a, b, c, d)] -> Bool Source #

(^==) :: CaseInsensitiveEq a => a -> a -> Bool Source #

An equality operator for CaseInsensitiveEq.

(^/=) :: CaseInsensitiveEq a => a -> a -> Bool Source #

An inequality operator for CaseInsensitiveEq.