-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Support for parsing and rendering YAML documents. -- -- Provides support for parsing and emitting Yaml documents. -- -- This package includes the full libyaml C library version 0.1.2 by -- Kirill Simonov (http://pyyaml.org/wiki/LibYAML) in the package -- so you don't need to worry about any non-Haskell dependencies. -- -- The package is broken down into two modules. Data.Yaml provides -- a high-level interface based around the JSON datatypes provided by the -- aeson package. Text.Libyaml provides a lower-level, -- streaming interface. For most users, Data.Yaml is recommended. @package yaml @version 0.8.2 -- | 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 => GSink Event m ByteString decode :: MonadResource m => ByteString -> GSource m Event encodeFile :: MonadResource m => FilePath -> GInfSink Event m decodeFile :: MonadResource m => FilePath -> GSource 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 :: !Object -> Value Array :: !Array -> Value String :: !Text -> Value Number :: !Number -> Value Bool :: !Bool -> 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 -- | 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 { 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:
--
--
-- {-# LANGUAGE DeriveGeneric #-}
--
-- import GHC.Generics
--
-- data Coord { x :: Double, y :: Double } deriving Generic
--
-- instance ToJSON Coord
--
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 { 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 { x :: Double, y :: Double } deriving Generic
--
-- instance FromJSON Coord
--
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
decodeHelper :: FromJSON a => Source Parse Event -> IO (Either ParseException (Either String a))
instance Typeable ParseException
instance Show ParseException
instance MonadIO m => MonadIO (PErrorT m)
instance MonadTrans PErrorT
instance Monad m => Monad (PErrorT m)
instance Exception ParseException