Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- parseText :: Value a -> Text -> Either Text a
- parseByteString :: Value a -> ByteString -> Either Text a
- getExpectations :: Value a -> Value
- data Value a
- value :: [Scalar a] -> Maybe (Mapping a) -> Maybe (Sequence a) -> Value a
- nullableValue :: [Scalar a] -> Maybe (Mapping a) -> Maybe (Sequence a) -> Value (Maybe a)
- sequenceValue :: Sequence a -> Value a
- mappingValue :: Mapping a -> Value a
- scalarsValue :: [Scalar a] -> Value a
- data Scalar a
- stringScalar :: String a -> Scalar a
- nullScalar :: a -> Scalar a
- boolScalar :: Scalar Bool
- scientificScalar :: Scalar Scientific
- doubleScalar :: Scalar Double
- rationalScalar :: MaxInputSize -> Scalar Rational
- boundedIntegerScalar :: (Integral a, FiniteBits a) => Signed -> NumeralSystem -> Scalar a
- unboundedIntegerScalar :: MaxInputSize -> Signed -> NumeralSystem -> Scalar Integer
- timestampScalar :: Scalar UTCTime
- dayScalar :: Scalar Day
- timeScalar :: Scalar TimeOfDay
- uuidScalar :: Scalar UUID
- binaryScalar :: Scalar ByteString
- data Mapping a
- foldMapping :: (key -> val -> assoc) -> Fold assoc a -> String key -> Value val -> Mapping a
- byKeyMapping :: CaseSensitive -> ByKey Text a -> Mapping a
- data Sequence a
- foldSequence :: Fold a b -> Value a -> Sequence b
- byOrderSequence :: ByOrder a -> Sequence a
- byKeySequence :: ByKey Int a -> Sequence a
- data String a
- textString :: String Text
- enumString :: CaseSensitive -> [(Text, a)] -> String a
- formattedString :: Text -> (Text -> Either Text a) -> String a
- attoparsedString :: Text -> Parser a -> String a
- data ByKey key a
- atByKey :: key -> Value a -> ByKey key a
- atOneOfByKey :: [key] -> Value a -> ByKey key a
- data ByOrder a
- fetchByOrder :: Value a -> ByOrder a
- newtype MaxInputSize = MaxInputSize Int
- newtype Signed = Signed Bool
- data NumeralSystem
- newtype CaseSensitive = CaseSensitive Bool
Execution
parseByteString :: Value a -> ByteString -> Either Text a Source #
Run a value parser on strict bytestring.
getExpectations :: Value a -> Value Source #
Get a tree of expectations, which can then be converted into documentation for people working with the YAML document or into one of the spec formats (e.g., YAML Spec, JSON Spec).
DSL
Value
Parser of any kind of YAML value: scalar, mapping or sequence.
value :: [Scalar a] -> Maybe (Mapping a) -> Maybe (Sequence a) -> Value a Source #
Specification of various alternative ways of parsing a non-nullable value.
nullableValue :: [Scalar a] -> Maybe (Mapping a) -> Maybe (Sequence a) -> Value (Maybe a) Source #
Specification of various alternative ways of parsing a nullable value.
Helpers
sequenceValue :: Sequence a -> Value a Source #
Value parser, which only expects sequence values.
mappingValue :: Mapping a -> Value a Source #
Value parser, which only expects mapping values.
scalarsValue :: [Scalar a] -> Value a Source #
Value parser, which only expects scalar values.
Scalar
Scalar value parser.
stringScalar :: String a -> Scalar a Source #
String scalar parser.
nullScalar :: a -> Scalar a Source #
A parser expecting a null value and resulting in the provided constant value when successful.
boolScalar :: Scalar Bool Source #
Boolean scalar parser.
scientificScalar :: Scalar Scientific Source #
Numeric scalar as scientific parser.
doubleScalar :: Scalar Double Source #
Numeric scalar as double parser.
rationalScalar :: MaxInputSize -> Scalar Rational Source #
Numeric scalar as rational parser protected with maximum allowed input size.
boundedIntegerScalar :: (Integral a, FiniteBits a) => Signed -> NumeralSystem -> Scalar a Source #
unboundedIntegerScalar :: MaxInputSize -> Signed -> NumeralSystem -> Scalar Integer Source #
Numeric scalar parser into any integer value.
binaryScalar :: Scalar ByteString Source #
String scalar parser as binary data encoded in Base-64.
Mapping
Mapping value parser.
foldMapping :: (key -> val -> assoc) -> Fold assoc a -> String key -> Value val -> Mapping a Source #
Mapping parser which folds pairs into some final data-structure.
byKeyMapping :: CaseSensitive -> ByKey Text a -> Mapping a Source #
Mapping parser which allows the user to look up fields and process them with individual parsers.
Sequence
Sequence value parser.
foldSequence :: Fold a b -> Value a -> Sequence b Source #
Homogenous sequence parser which folds into a final data-structure.
byOrderSequence :: ByOrder a -> Sequence a Source #
Heterogenous sequence parser by order in the sequence, which lets you apply individual parsers to elements.
byKeySequence :: ByKey Int a -> Sequence a Source #
Heterogenous sequence parser by index in the sequence, which lets you apply individual parsers to elements.
String
String value parser applicable to string scalars and mapping keys.
textString :: String Text Source #
String as is.
enumString :: CaseSensitive -> [(Text, a)] -> String a Source #
Look the string up as a key in the provided dictionary.
String parsed using the provided function.
String parsed using the provided textual attoparsec parser.
ByKey
General abstraction for specification of parsers performing lookups by keys.
atOneOfByKey :: [key] -> Value a -> ByKey key a Source #
Parse a value at one of keys (whichever exists) using the provided parser.
ByOrder
Parser which fetches elements by the order in which it is composed.
fetchByOrder :: Value a -> ByOrder a Source #
Parse the next value using the provided parser.
Value types
newtype MaxInputSize Source #
Specification of the maximum allowed length for the input. A safety measure to ensure that the parser doesn't exhaust memory when parsing to unlimited datatypes.
newtype CaseSensitive Source #