module Data.Object.Yaml.Internal
(
Event (..)
, Style (..)
, Tag (..)
, YamlException (..)
) where
import Data.ByteString (ByteString)
import Control.Exception (Exception)
import Data.Typeable (Typeable)
import Data.Convertible.Text
data Event =
EventNone
| EventStreamStart
| EventStreamEnd
| EventDocumentStart
| EventDocumentEnd
| EventAlias
| EventScalar ByteString Tag Style
| EventSequenceStart
| EventSequenceEnd
| EventMappingStart
| EventMappingEnd
deriving (Show, Eq)
data Style = Any
| Plain
| SingleQuoted
| DoubleQuoted
| Literal
| Folded
deriving (Show, Eq, Enum, Bounded, Ord)
data Tag = StrTag
| FloatTag
| NullTag
| BoolTag
| SetTag
| IntTag
| SeqTag
| MapTag
| UriTag String
| NoTag
deriving (Show, Eq)
instance ConvertSuccess Tag String where
convertSuccess StrTag = "tag:yaml.org,2002:str"
convertSuccess FloatTag = "tag:yaml.org,2002:float"
convertSuccess NullTag = "tag:yaml.org,2002:null"
convertSuccess BoolTag = "tag:yaml.org,2002:bool"
convertSuccess SetTag = "tag:yaml.org,2002:set"
convertSuccess IntTag = "tag:yaml.org,2002:int"
convertSuccess SeqTag = "tag:yaml.org,2002:seq"
convertSuccess MapTag = "tag:yaml.org,2002:map"
convertSuccess (UriTag s) = s
convertSuccess NoTag = ""
instance ConvertSuccess ByteString Tag where
convertSuccess = (cs :: String -> Tag) . cs
instance ConvertSuccess String Tag where
convertSuccess "tag:yaml.org,2002:str" = StrTag
convertSuccess "tag:yaml.org,2002:float" = FloatTag
convertSuccess "tag:yaml.org,2002:null" = NullTag
convertSuccess "tag:yaml.org,2002:bool" = BoolTag
convertSuccess "tag:yaml.org,2002:set" = SetTag
convertSuccess "tag:yaml.org,2002:int" = IntTag
convertSuccess "tag:yaml.org,2002:seq" = SeqTag
convertSuccess "tag:yaml.org,2002:map" = MapTag
convertSuccess "" = NoTag
convertSuccess s = UriTag s
data YamlException =
YamlParserException
{ parserProblem :: String
, parserContext :: String
, parserOffset :: Int
}
| YamlEmitterException { emitterProblem :: String }
| YamlOutOfMemory
| YamlInvalidEventStreamBeginning [Event]
| YamlInvalidEventStreamEnd [Event]
| YamlPrematureEventStreamEnd
| YamlNonScalarKey
| YamlInvalidStartingEvent Event
deriving (Show, Typeable)
instance Exception YamlException