-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Low-level binding to the libyaml C library. -- -- 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. @package yaml @version 0.5.1 -- | 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 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 :: ResourceIO m => Sink Event m ByteString decode :: ResourceIO m => ByteString -> Source m Event encodeFile :: ResourceIO m => FilePath -> Sink Event m () decodeFile :: ResourceIO m => FilePath -> Source m Event data YamlException YamlException :: String -> YamlException 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 YamlException instance Exception YamlException instance Exception ToEventRawException 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 -- | 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: -- -- -- -- To use the latter option, simply add a deriving -- Generic clause to your datatype and declare a -- ToJSON instance for your datatype without giving a definition -- for toJSON. -- -- For example the previous example can be simplified to just: -- --
--   {-# 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: -- -- -- -- To use this, simply add a deriving Generic clause to -- your datatype and declare a FromJSON instance for your -- datatype without giving a definition for parseJSON. -- -- For example the previous example can be simplified to just: -- --
--   {-# 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) instance Typeable ParseException instance Show ParseException instance MonadIO m => MonadIO (PErrorT m) instance MonadTrans PErrorT instance Monad m => Monad (PErrorT m) instance Exception ParseException