quack-0.0.0.3: Convenience parser combinators for URI query strings

Safe HaskellNone
LanguageHaskell2010

Data.Uri.Quack

Contents

Synopsis

Documentation

data Parser a Source #

Instances

Monad Parser Source # 

Methods

(>>=) :: Parser a -> (a -> Parser b) -> Parser b #

(>>) :: Parser a -> Parser b -> Parser b #

return :: a -> Parser a #

fail :: String -> Parser a #

Functor Parser Source # 

Methods

fmap :: (a -> b) -> Parser a -> Parser b #

(<$) :: a -> Parser b -> Parser a #

Applicative Parser Source # 

Methods

pure :: a -> Parser a #

(<*>) :: Parser (a -> b) -> Parser a -> Parser b #

(*>) :: Parser a -> Parser b -> Parser b #

(<*) :: Parser a -> Parser b -> Parser a #

Alternative Parser Source # 

Methods

empty :: Parser a #

(<|>) :: Parser a -> Parser a -> Parser a #

some :: Parser a -> Parser [a] #

many :: Parser a -> Parser [a] #

runParser :: Parser a -> [(Text, Maybe Text)] -> Either ParserError a Source #

decodeUtf8Query :: Query -> [(Text, Maybe Text)] Source #

Combining

unlabeled :: PieceParser a -> Parser a Source #

Parse only the label, disregarding any = value;

unlabeled (attoparsec double)

would parse something like

"/foo?1234"

or

"/foo?1234=asdf"

(.=) :: PieceParser Text -> PieceParser b -> Parser b Source #

Parse with a label, but throw the parse result of the label away;

"foo" .= attoparsec double

would parse something like

"/foo?foo=1234"

overEquals :: (a -> b -> c) -> PieceParser a -> PieceParser b -> Parser c Source #

liftM2 for parse results between =, for instance:

overEquals (,) (attoparsec $ double <* endOfInput)
               (attoparsec $ double <* endOfInput)

would parse something like

"/foo?1234=1234"

Atoms

fromUtf8 :: (Text -> Either String a) -> PieceParser a Source #

attoparsec :: Parser a -> PieceParser a Source #

aeson :: FromJSON a => PieceParser a Source #