derp-lib-0.0.0.1: Text/Derp/Char.hs
module Text.Derp.Char
( oneOf, spaces, space, newline, tab
, upper, lower, alphaNum, digit, hexDigit, octDigit
, char, satisfy, string
) where
import Text.Derp -- hiding (xsR, xsL, xsIn, parens, parensIn
-- , amb, ambIn, sexp, sexpIn
-- )
import Text.Derp.Combinator
import Data.Char
token c = Token [c] [c]
oneOf :: [Char] -> Parser Char
oneOf s = foldr1 (<|>) (map char s)
-- noneOf
spaces :: Parser ()
spaces = skipMany space
space, newline, tab :: Parser Char
space = satisfy isSpace
newline = char '\n'
tab = char '\t'
upper, lower, alphaNum, letter, digit, hexDigit, octDigit :: Parser Char
upper = satisfy isUpper
lower = satisfy isLower
alphaNum = satisfy isAlphaNum
letter = satisfy isLetter
digit = satisfy isDigit
hexDigit = satisfy isHexDigit
octDigit = satisfy isOctDigit
char :: Char -> Parser Char
char c = ter [c] ==> head
-- anyChar
satisfy :: (Char -> Bool) -> Parser Char
satisfy f = oneOf (filter f [minBound .. maxBound])
string :: String -> Parser String
string s = foldr (\pc pcs -> pc <~> pcs ==> uncurry (:)) (eps []) (map char s)