@@ -6,6 +6,7 @@ module Data.Object.Yaml
6 ( -- * The event stream
6 ( -- * The event stream
8 , Style (..)
8 , Style (..)
9 -- * 'YamlObject' definition
10 -- * 'YamlObject' definition
10 , Yaml (..)
11 , Yaml (..)
11 , YamlObject
12 , YamlObject
@@ -34,7 +35,7 @@ data Event =
34 | EventDocumentStart
35 | EventDocumentStart
35 | EventDocumentEnd
36 | EventDocumentEnd
36 | EventAlias
37 | EventAlias
37− | EventScalar ByteString ByteString Style
38+ | EventScalar ByteString Tag Style
38 | EventSequenceStart
39 | EventSequenceStart
39 | EventSequenceEnd
40 | EventSequenceEnd
40 | EventMappingStart
41 | EventMappingStart
@@ -49,9 +50,48 @@ data Style = Any
50 deriving (Show, Eq, Enum, Bounded, Ord)
51 deriving (Show, Eq, Enum, Bounded, Ord)
64+instance Show Tag where
65+ show StrTag = "tag:yaml.org,2002:str"
66+ show FloatTag = "tag:yaml.org,2002:float"
67+ show NullTag = "tag:yaml.org,2002:null"
68+ show BoolTag = "tag:yaml.org,2002:bool"
69+ show SetTag = "tag:yaml.org,2002:set"
70+ show IntTag = "tag:yaml.org,2002:int"
71+ show SeqTag = "tag:yaml.org,2002:seq"
72+ show MapTag = "tag:yaml.org,2002:map"
75+instance ConvertSuccess Tag [Char] where
76+ convertSuccess = show
77+instance ConvertSuccess ByteString Tag where
78+ convertSuccess = (convertSuccess :: String -> Tag)
80+instance ConvertSuccess [Char] Tag where
81+ convertSuccess "tag:yaml.org,2002:str" = StrTag
82+ convertSuccess "tag:yaml.org,2002:float" = FloatTag
83+ convertSuccess "tag:yaml.org,2002:null" = NullTag
84+ convertSuccess "tag:yaml.org,2002:bool" = BoolTag
85+ convertSuccess "tag:yaml.org,2002:set" = SetTag
86+ convertSuccess "tag:yaml.org,2002:int" = IntTag
87+ convertSuccess "tag:yaml.org,2002:seq" = SeqTag
88+ convertSuccess "tag:yaml.org,2002:map" = MapTag
89+ convertSuccess "" = NoTag
90+ convertSuccess s = UriTag s
52data Yaml = Yaml
92data Yaml = Yaml
53 { value :: ByteString
93 { value :: ByteString
54− , tag :: String
94+ , tag :: Tag
55 , style :: Style
95 , style :: Style
57 deriving (Show, Eq)
97 deriving (Show, Eq)
@@ -61,12 +101,12 @@ instance ConvertSuccess Yaml Event where
61instance ConvertSuccess Yaml [Char] where
101instance ConvertSuccess Yaml [Char] where
62 convertSuccess = convertSuccess . value
102 convertSuccess = convertSuccess . value
63instance ConvertSuccess [Char] Yaml where
103instance ConvertSuccess [Char] Yaml where
64− convertSuccess t = Yaml (convertSuccess t) "" Any
104+ convertSuccess t = Yaml (convertSuccess t) NoTag Any
66instance ConvertSuccess Yaml Text where
106instance ConvertSuccess Yaml Text where
67 convertSuccess = convertSuccess . value
107 convertSuccess = convertSuccess . value
68instance ConvertSuccess Text Yaml where
108instance ConvertSuccess Text Yaml where
69− convertSuccess t = Yaml (convertSuccess t) "" Any
109+ convertSuccess t = Yaml (convertSuccess t) NoTag Any
71-- FIXME the following are incredibly stupid conversions which ignore tag
111-- FIXME the following are incredibly stupid conversions which ignore tag
72-- and style information.
112-- and style information.