@@ -5,6 +5,7 @@
55{-# LANGUAGE MultiParamTypeClasses #-}
66{-# LANGUAGE PatternGuards #-}
77{-# LANGUAGE ScopedTypeVariables #-}
8+{-# LANGUAGE OverloadedStrings #-}
89module Data.Yaml
910 ( -- * Types
1011 Value (..)
@@ -25,6 +26,7 @@ import Data.Aeson (Value (..), ToJSON (..), FromJSON (..), object)
2526import Data.Aeson.Types (Pair, parseMaybe)
2627import Text.Libyaml hiding (encode, decode, encodeFile, decodeFile)
2728import Data.ByteString (ByteString)
29+import qualified Data.ByteString.Char8 as S8
2830import qualified Data.Map as Map
2931import System.IO.Unsafe (unsafePerformIO)
3032import Control.Exception (try, throwIO, fromException, Exception)
@@ -72,11 +74,15 @@ objToEvents' (Array list) rest =
7274objToEvents' (Object pairs) rest =
7375 EventMappingStart Nothing
7476 : foldr ($) (EventMappingEnd : rest) (map pairToEvents $ M.toList pairs)
75−objToEvents' (String s) rest = EventScalar (encodeUtf8 s) StrTag Any Nothing : rest
77+objToEvents' (String s) rest = EventScalar (encodeUtf8 s) NoTag Any Nothing : rest
78+objToEvents' Null rest = EventScalar "null" NoTag Literal Nothing : rest
79+objToEvents' (Bool True) rest = EventScalar "true" NoTag Literal Nothing : rest
80+objToEvents' (Bool False) rest = EventScalar "false" NoTag Literal Nothing : rest
81+objToEvents' (Number n) rest = EventScalar (S8.pack $ show n) NoTag Literal Nothing : rest
7682
7783pairToEvents :: Pair -> [Y.Event] -> [Y.Event]
7884pairToEvents (k, v) rest =
79− EventScalar (encodeUtf8 k) StrTag Any Nothing
85+ EventScalar (encodeUtf8 k) NoTag Any Nothing
8086 : objToEvents' v rest
8187
8288-- Parsing