module Text.ParserCombinators.PArrow.Char where
import Control.Arrow
import Text.ParserCombinators.PArrow.CharSet
import Text.ParserCombinators.PArrow.MD
import Text.ParserCombinators.PArrow.Combinator
char :: Char -> MD i Char
char = MEqual
anyChar :: MD i Char
anyChar = MCSet CS_Any
anyOf :: [Char] -> MD i Char
anyOf = MChoice . (map char)
digit :: MD i Char
digit = MCSet CS_Digit
letter :: MD i Char
letter = MCSet CS_Alpha
alnum :: MD i Char
alnum = MCSet CS_Alnum
wordChar:: MD i Char
wordChar= MCSet CS_Word
word :: MD i String
word = many1 wordChar
spaces :: MD i String
spaces = many1 white
white :: MD i Char
white = MCSet (CS_Whitespace)
string :: String -> MD i String
string [] = arr (\_ -> "")
string str = arr (\_ -> ' ') >>> foldr1 (>>>) (map char str) >>> arr (\_ -> str)