-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Support for parsing and rendering YAML documents. -- @package yaml @version 0.8.13 -- | Low-level, streaming YAML interface. For a higher-level interface, see -- Data.Yaml. module Text.Libyaml data Event EventStreamStart :: Event EventStreamEnd :: Event EventDocumentStart :: Event EventDocumentEnd :: Event EventAlias :: !AnchorName -> Event EventScalar :: !ByteString -> !Tag -> !Style -> !Anchor -> Event EventSequenceStart :: !Anchor -> Event EventSequenceEnd :: Event EventMappingStart :: !Anchor -> Event EventMappingEnd :: Event data Style Any :: Style Plain :: Style SingleQuoted :: Style DoubleQuoted :: Style Literal :: Style Folded :: Style PlainNoTag :: Style data Tag StrTag :: Tag FloatTag :: Tag NullTag :: Tag BoolTag :: Tag SetTag :: Tag IntTag :: Tag SeqTag :: Tag MapTag :: Tag UriTag :: String -> Tag NoTag :: Tag type AnchorName = String type Anchor = Maybe AnchorName encode :: MonadResource m => Consumer Event m ByteString decode :: MonadResource m => ByteString -> Producer m Event encodeFile :: MonadResource m => FilePath -> Consumer Event m () decodeFile :: MonadResource m => FilePath -> Producer m Event data YamlException YamlException :: String -> YamlException -- | problem, context, index, position line, position column YamlParseException :: String -> String -> YamlMark -> YamlException yamlProblem :: YamlException -> String yamlContext :: YamlException -> String yamlProblemMark :: YamlException -> YamlMark -- | The pointer position data YamlMark YamlMark :: Int -> Int -> Int -> YamlMark yamlIndex :: YamlMark -> Int yamlLine :: YamlMark -> Int yamlColumn :: YamlMark -> Int instance Typeable Style instance Typeable Tag instance Typeable ToEventRawException instance Typeable YamlException instance Show Style instance Read Style instance Eq Style instance Enum Style instance Bounded Style instance Ord Style instance Data Style instance Show Tag instance Eq Tag instance Read Tag instance Data Tag instance Show Event instance Eq Event instance Enum EventType instance Show EventType instance Show ToEventRawException instance Show YamlMark instance Show YamlException instance Exception YamlException instance Exception ToEventRawException -- | Provides a high-level interface for processing YAML files. -- -- This module reuses most of the infrastructure from the aeson -- package. This means that you can use all of the existing tools for -- JSON processing for processing YAML files. As a result, much of the -- documentation below mentions JSON; do not let that confuse you, it's -- intentional. -- -- For the most part, YAML content translates directly into JSON, and -- therefore there is very little data loss. If you need to deal with -- YAML more directly (e.g., directly deal with aliases), you should use -- the Text.Libyaml module instead. -- -- For documentation on the aeson types, functions, classes, and -- operators, please see the Data.Aeson module of the -- aeson package. module Data.Yaml -- | A JSON value represented as a Haskell value. data Value :: * Object :: SrictNotUnpackedObject -> Value Array :: SrictNotUnpackedArray -> Value String :: SrictNotUnpackedText -> Value Number :: SrictNotUnpackedScientific -> Value Bool :: SrictNotUnpackedBool -> Value Null :: Value -- | A continuation-based parser type. data Parser a :: * -> * -- | A JSON "object" (key/value map). type Object = HashMap Text Value -- | A JSON "array" (sequence). type Array = Vector Value data ParseException NonScalarKey :: ParseException UnknownAlias :: AnchorName -> ParseException _anchorName :: ParseException -> AnchorName UnexpectedEvent :: Maybe Event -> Maybe Event -> ParseException _received :: ParseException -> Maybe Event _expected :: ParseException -> Maybe Event InvalidYaml :: (Maybe YamlException) -> ParseException AesonException :: String -> ParseException OtherParseException :: SomeException -> ParseException NonStringKeyAlias :: AnchorName -> Value -> ParseException CyclicIncludes :: ParseException -- | Alternative to show to display a ParseException on the -- screen. Instead of displaying the data constructors applied to their -- arguments, a more textual output is returned. For example, instead of -- printing: -- --
-- AesonException "The key \"foo\" was not found" ---- -- It looks more pleasant to print: -- --
-- Aeson exception: The key "foo" was not found ---- -- Since 0.8.11 prettyPrintParseException :: ParseException -> String data YamlException YamlException :: String -> YamlException -- | problem, context, index, position line, position column YamlParseException :: String -> String -> YamlMark -> YamlException yamlProblem :: YamlException -> String yamlContext :: YamlException -> String yamlProblemMark :: YamlException -> YamlMark -- | The pointer position data YamlMark YamlMark :: Int -> Int -> Int -> YamlMark yamlIndex :: YamlMark -> Int yamlLine :: YamlMark -> Int yamlColumn :: YamlMark -> Int -- | Create a Value from a list of name/value Pairs. If -- duplicate keys arise, earlier keys and their associated values win. object :: [Pair] -> Value array :: [Value] -> Value -- | Construct a Pair from a key and a value. (.=) :: ToJSON a => Text -> a -> Pair -- | Retrieve the value associated with the given key of an Object. -- The result is empty if the key is not present or the value -- cannot be converted to the desired type. -- -- This accessor is appropriate if the key and value must be -- present in an object for it to be valid. If the key and value are -- optional, use '(.:?)' instead. (.:) :: FromJSON a => Object -> Text -> Parser a -- | Retrieve the value associated with the given key of an Object. -- The result is Nothing if the key is not present, or -- empty if the value cannot be converted to the desired type. -- -- This accessor is most useful if the key and value can be absent from -- an object without affecting its validity. If the key and value are -- mandatory, use '(.:)' instead. (.:?) :: FromJSON a => Object -> Text -> Parser (Maybe a) -- | Helper for use in combination with .:? to provide default -- values for optional JSON object fields. -- -- This combinator is most useful if the key and value can be absent from -- an object without affecting its validity and we know a default value -- to assign in that case. If the key and value are mandatory, use '(.:)' -- instead. -- -- Example usage: -- --
-- v1 <- o .:? "opt_field_with_dfl" .!= "default_val" -- v2 <- o .: "mandatory_field" -- v3 <- o .:? "opt_field2" --(.!=) :: Parser (Maybe a) -> a -> Parser a parseMonad :: Monad m => (a -> Parser b) -> a -> m b -- | Run a Parser with an Either result type. parseEither :: (a -> Parser b) -> a -> Either String b -- | Run a Parser with a Maybe result type. parseMaybe :: (a -> Parser b) -> a -> Maybe b -- | A type that can be converted to JSON. -- -- An example type and instance: -- -- @{-# LANGUAGE OverloadedStrings #-} -- -- data Coord = Coord { x :: Double, y :: Double } -- -- instance ToJSON Coord where toJSON (Coord x y) = object ["x" -- .= x, "y" .= y] @ -- -- Note the use of the OverloadedStrings language extension -- which enables Text values to be written as string literals. -- -- Instead of manually writing your ToJSON instance, there are -- three options to do it automatically: -- --
-- instance ToJSON Coord where -- toJSON = genericToJSON defaultOptions --class ToJSON a toJSON :: ToJSON a => a -> Value -- | A type that can be converted from JSON, with the possibility of -- failure. -- -- When writing an instance, use empty, mzero, or -- fail to make a conversion fail, e.g. if an Object is -- missing a required key, or the value is of the wrong type. -- -- An example type and instance: -- --
-- {-# LANGUAGE OverloadedStrings #-}
--
-- data Coord = Coord { x :: Double, y :: Double }
--
-- instance FromJSON Coord where
-- parseJSON (Object v) = Coord <$>
-- v .: "x" <*>
-- v .: "y"
--
-- -- A non-Object value is of the wrong type, so use mzero to fail.
-- parseJSON _ = mzero
--
--
-- Note the use of the OverloadedStrings language extension
-- which enables Text values to be written as string literals.
--
-- Instead of manually writing your FromJSON instance, there are
-- three options to do it automatically:
--
--
-- {-# LANGUAGE DeriveGeneric #-}
--
-- import GHC.Generics
--
-- data Coord = Coord { x :: Double, y :: Double } deriving Generic
--
-- instance FromJSON Coord
--
--
-- Note that, instead of using DefaultSignatures, it's also
-- possible to parameterize the generic decoding using
-- genericParseJSON applied to your encoding/decoding
-- Options:
--
-- -- instance FromJSON Coord where -- parseJSON = genericParseJSON defaultOptions --class FromJSON a parseJSON :: FromJSON a => Value -> Parser a encode :: ToJSON a => a -> ByteString encodeFile :: ToJSON a => FilePath -> a -> IO () decode :: FromJSON a => ByteString -> Maybe a decodeFile :: FromJSON a => FilePath -> IO (Maybe a) decodeEither :: FromJSON a => ByteString -> Either String a -- | More helpful version of decodeEither which returns the -- YamlException. -- -- Since 0.8.3 decodeEither' :: FromJSON a => ByteString -> Either ParseException a -- | A version of decodeFile which should not throw runtime -- exceptions. -- -- Since 0.8.4 decodeFileEither :: FromJSON a => FilePath -> IO (Either ParseException a) decodeHelper :: FromJSON a => Source Parse Event -> IO (Either ParseException (Either String a)) -- | Just a re-export of Data.Yaml. In the future, this will be -- the canonical name for that module's contents. module Data.Yaml.Aeson -- | NOTE: This module is a highly experimental preview release. It may -- change drastically, or be entirely removed, in a future release. module Data.Yaml.Builder newtype YamlBuilder YamlBuilder :: ([Event] -> [Event]) -> YamlBuilder unYamlBuilder :: YamlBuilder -> [Event] -> [Event] class ToYaml a toYaml :: ToYaml a => a -> YamlBuilder mapping :: [(Text, YamlBuilder)] -> YamlBuilder array :: [YamlBuilder] -> YamlBuilder string :: Text -> YamlBuilder bool :: Bool -> YamlBuilder null :: YamlBuilder scientific :: Scientific -> YamlBuilder -- | Deprecated: Use scientific number :: Scientific -> YamlBuilder toByteString :: ToYaml a => a -> ByteString writeYamlFile :: ToYaml a => FilePath -> a -> IO () (.=) :: ToYaml a => Text -> a -> (Text, YamlBuilder) instance ToYaml Int instance ToYaml Text instance ToYaml a => ToYaml [a] instance ToYaml a => ToYaml [(Text, a)] instance ToYaml YamlBuilder -- | Prettier YAML encoding. -- -- Since 0.8.13 module Data.Yaml.Pretty -- | Configurable encode. -- -- Since 0.8.13 encodePretty :: ToJSON a => Config -> a -> ByteString -- | Since 0.8.13 data Config -- | Since 0.8.13 getConfCompare :: Config -> Text -> Text -> Ordering -- | Since 0.8.13 setConfCompare :: (Text -> Text -> Ordering) -> Config -> Config -- | The default configuration: do not sort objects. -- -- Since 0.8.13 defConfig :: Config -- | NOTE: This module is a highly experimental preview release. It may -- change drastically, or be entirely removed, in a future release. module Data.Yaml.Parser newtype YamlParser a YamlParser :: (AnchorMap -> Either Text a) -> YamlParser a unYamlParser :: YamlParser a -> AnchorMap -> Either Text a lookupAnchor :: AnchorName -> YamlParser (Maybe YamlValue) withAnchor :: AnchorName -> Text -> (YamlValue -> YamlParser a) -> YamlParser a withMapping :: Text -> ([(Text, YamlValue)] -> YamlParser a) -> YamlValue -> YamlParser a withSequence :: Text -> ([YamlValue] -> YamlParser a) -> YamlValue -> YamlParser a withText :: Text -> (Text -> YamlParser a) -> YamlValue -> YamlParser a typeMismatch :: Text -> YamlValue -> YamlParser a class FromYaml a fromYaml :: FromYaml a => YamlValue -> YamlParser a data YamlValue Mapping :: [(Text, YamlValue)] -> Anchor -> YamlValue Sequence :: [YamlValue] -> Anchor -> YamlValue Scalar :: ByteString -> Tag -> Style -> Anchor -> YamlValue Alias :: AnchorName -> YamlValue type AnchorMap = Map AnchorName YamlValue data RawDoc RawDoc :: YamlValue -> AnchorMap -> RawDoc parseRawDoc :: (FromYaml a, MonadThrow m) => RawDoc -> m a (.:) :: FromYaml a => [(Text, YamlValue)] -> Text -> YamlParser a data YamlParseException UnexpectedEndOfEvents :: YamlParseException UnexpectedEvent :: Event -> YamlParseException FromYamlException :: Text -> YamlParseException sinkValue :: MonadThrow m => Consumer Event (WriterT AnchorMap m) YamlValue sinkRawDoc :: MonadThrow m => Consumer Event m RawDoc readYamlFile :: FromYaml a => FilePath -> IO a instance Typeable YamlParseException instance Show YamlValue instance Show RawDoc instance Show YamlParseException instance Exception YamlParseException instance FromYaml Int instance FromYaml Text instance FromYaml a => FromYaml [a] instance FromYaml YamlValue instance MonadPlus YamlParser instance Monad YamlParser instance Monoid (YamlParser a) instance Alternative YamlParser instance Applicative YamlParser instance Functor YamlParser module Data.Yaml.Include -- | Like decodeFile but with support for relative and absolute -- includes. -- -- The syntax for includes follows the form: -- --
-- somekey: !include ./somefile.yaml --decodeFile :: FromJSON a => FilePath -> IO (Maybe a) -- | Like decodeFileEither but with support for relative and -- absolute includes. -- -- The syntax for includes follows the form: -- --
-- somekey: !include ./somefile.yaml --decodeFileEither :: FromJSON a => FilePath -> IO (Either ParseException a)