snap-core-1.0.5.1: Snap: A Haskell Web Framework (core interfaces and types)
Safe HaskellSafe-Inferred
LanguageHaskell2010

Snap.Internal.Parsing

Synopsis

Documentation

(<?>) :: Parser a -> String -> Parser a infix 0 Source #

toTable :: (Char -> Bool) -> Char -> Bool Source #

pHeaders :: Parser [(ByteString, ByteString)] Source #

Parser for request headers.

pTokens :: Parser [ByteString] Source #

Used for "#field-name", and field-name = token, so "#token": comma-separated tokens/field-names, like a header field list.

type DList a = [a] -> [a] Source #

urlDecode :: ByteString -> Maybe ByteString Source #

Decode an URL-escaped string (see http://tools.ietf.org/html/rfc2396.html#section-2.4)

Example:

ghci> urlDecode "1+attoparsec+%7e%3d+3+*+10%5e-2+meters"
Just "1 attoparsec ~= 3 * 10^-2 meters"

urlEncode :: ByteString -> ByteString Source #

URL-escape a string (see http://tools.ietf.org/html/rfc2396.html#section-2.4)

Example:

ghci> urlEncode "1 attoparsec ~= 3 * 10^-2 meters"
"1+attoparsec+%7e%3d+3+*+10%5e-2+meters"

urlEncodeBuilder :: ByteString -> Builder Source #

URL-escape a string (see http://tools.ietf.org/html/rfc2396.html#section-2.4) into a Builder.

Example:

ghci> import Data.ByteString.Builder
ghci> toLazyByteString . urlEncodeBuilder $ "1 attoparsec ~= 3 * 10^-2 meters"
"1+attoparsec+%7e%3d+3+*+10%5e-2+meters"

parseUrlEncoded :: ByteString -> Map ByteString [ByteString] Source #

Parse a string encoded in application/x-www-form-urlencoded format.

Example:

ghci> parseUrlEncoded "Name=John+Doe&Name=Jane+Doe&Age=23&Formula=a+%2B+b+%3D%3D+13%25%21"
fromList [(Age,["23"]),(Formula,["a + b == 13%!"]),(Name,["John Doe","Jane Doe"])]

buildUrlEncoded :: Map ByteString [ByteString] -> Builder Source #

Like printUrlEncoded, but produces a Builder instead of a ByteString. Useful for constructing a large string efficiently in a single step.

Example:

ghci> import Data.Map
ghci> import Data.Monoid
ghci> import Data.ByteString.Builder
ghci> let bldr = buildUrlEncoded (fromList [(Name, ["John Doe"]), (Age, ["23"])])
ghci> toLazyByteString $ byteString "http://example.com/script?" <> bldr
"http://example.com/script?Age=23&Name=John+Doe"

printUrlEncoded :: Map ByteString [ByteString] -> ByteString Source #

Given a collection of key-value pairs with possibly duplicate keys (represented as a Map), construct a string in application/x-www-form-urlencoded format.

Example:

ghci> printUrlEncoded (fromList [(Name, ["John Doe"]), (Age, ["23"])])
"Age=23&Name=John+Doe"