module Data.CharSet.Posix.Ascii
( posixAscii
, alnum, alpha, blank, cntrl, digit, graph, print, word, punct, space, upper, lower, xdigit
) where
import Prelude hiding (print)
import Data.CharSet
import Data.Map (Map)
import qualified Data.Map as Map
alnum, alpha, blank, cntrl, digit, graph, print, word, punct, space, upper, lower, xdigit :: CharSet
alnum = alpha `union` digit
alpha = lower `union` upper
blank = fromList " \t"
cntrl = insert '\x7f' $ range '\x00' '\x1f'
digit = range '0' '9'
lower = range 'a' 'z'
upper = range 'A' 'Z'
graph = range '\x21' '\x7e'
print = insert '\x20' graph
word = insert '_' alnum
punct = fromList "-!\"#$%&'()*+,./:;<=>?@[\\]^_`{|}~"
space = fromList " \t\r\n\v\f"
xdigit = digit `union` range 'a' 'f' `union` range 'A' 'F'
posixAscii :: Map String CharSet
posixAscii = Map.fromList
[ ("alnum", alnum)
, ("alpha", alpha)
, ("blank", blank)
, ("cntrl", cntrl)
, ("digit", digit)
, ("graph", graph)
, ("print", print)
, ("word", word)
, ("punct", punct)
, ("space", space)
, ("upper", upper)
, ("lower", lower)
, ("xdigit", xdigit)
]