License | MIT-style (see LICENSE) |
---|---|
Stability | provisional |
Portability | portable |
Safe Haskell | Safe-Inferred |
Language | Haskell2010 |
A simple language for mapping keys to either a single string-value or a list of strings. The syntax is line-oriented and extremely simple. A line consists of key-value pairs, which are written as the key, followed by an equals sign, followed by a double-quoted string. Several double-quoted strings can follow the equal sign, in which case they will be treated as a list. Space characters separate elements, as so:
foo="string" bar="another string" baz="s1" "s2" "this is a list" "s4"
Literal double-quotes can be included in a string by doubling them.
@foo="this string contains ""quotes"""
Synopsis
- parseKV :: PermParser Parser a -> Text -> Either String a
- value :: Text -> Parser Text
- values :: Text -> Parser [Text]
- (<$?>) :: (a -> b) -> (a, p a) -> PermParser p b
- (<||>) :: PermParser p (a -> b) -> p a -> PermParser p b
- (<$$>) :: (a -> b) -> p a -> PermParser p b
- (<|?>) :: PermParser p (a -> b) -> (a, p a) -> PermParser p b
Documentation
parseKV :: PermParser Parser a -> Text -> Either String a Source #
Parse a key-value string wrapper constructed via the permutation
parser combinators from Perm
and the parsers value
and values
.
values :: Text -> Parser [Text] Source #
values k
is a parser for the list-valued key k
. At least a
single value is required.
(<$?>) :: (a -> b) -> (a, p a) -> PermParser p b infixl 2 #
The expression f <$?> (x,p)
creates a fresh permutation parser
consisting of parser p
. The the final result of the permutation
parser is the function f
applied to the return value of p
. The
parser p
is optional - if it can not be applied, the default value
x
will be used instead.
(<||>) :: PermParser p (a -> b) -> p a -> PermParser p b infixl 1 #
The expression perm <||> p
adds parser p
to the permutation
parser perm
. The parser p
is not allowed to accept empty input -
use the optional combinator (<|?>
) instead. Returns a
new permutation parser that includes p
.
(<$$>) :: (a -> b) -> p a -> PermParser p b infixl 2 #
The expression f <$$> p
creates a fresh permutation parser
consisting of parser p
. The the final result of the permutation
parser is the function f
applied to the return value of p
. The
parser p
is not allowed to accept empty input - use the optional
combinator (<$?>
) instead.
If the function f
takes more than one parameter, the type variable
b
is instantiated to a functional type which combines nicely with
the adds parser p
to the (<||>
) combinator. This
results in stylized code where a permutation parser starts with a
combining function f
followed by the parsers. The function f
gets its parameters in the order in which the parsers are specified,
but actual input can be in any order.
(<|?>) :: PermParser p (a -> b) -> (a, p a) -> PermParser p b infixl 1 #
The expression perm <||> (x,p)
adds parser p
to the
permutation parser perm
. The parser p
is optional - if it can
not be applied, the default value x
will be used instead. Returns
a new permutation parser that includes the optional parser p
.