Changeset 8602
- Timestamp:
- 01/07/06 10:14:02 (3 years ago)
- Files:
-
- 1 modified
-
src/Pugs/Prim/Yaml.hs (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim/Yaml.hs
r8601 r8602 43 43 obj <- toYaml limit v 44 44 rv <- liftIO (emitYaml obj) 45 case rv of 46 Left err -> fail $ "YAML Emit Error: " ++ err 47 Right str -> return $ VStr str 45 either (fail . ("YAML Emit Error: "++)) 46 (return . VStr) rv 48 47 49 48 toYaml :: Int -> Val -> Eval YamlNode … … 67 66 -- parens, which is, of course, wrong. 68 67 hash <- fromVal v :: Eval VHash 69 attrs <- toYaml d (VRef (hashRef hash))68 attrs <- toYaml d $ VRef (hashRef hash) 70 69 return $ addTag (Just $ "!pugs:object/" ++ showType (objType obj)) attrs 71 70 where 72 addTag _ (YamlMap (Just x) _) = error ("can't add tag: already tagged with" ++ x)73 addTag tag (YamlMap _ m) = YamlMap tag m74 toYaml _ v = return $ YamlStr $ encodeUTF8 $ prettyv71 addTag _ (YamlMap (Just x) _) = error ("can't add tag: already tagged with" ++ x) 72 addTag tag (YamlMap _ m) = YamlMap tag m 73 toYaml _ v = (return . YamlStr . encodeUTF8 . pretty) v 75 74 76 75 hashToYaml :: Int -> VRef -> Eval YamlNode … … 78 77 h <- hash_fetch hv 79 78 let assocs = Map.toList h 80 yamlmap <- flip mapM assocs (\(ka, va) -> do81 ka' <- toYaml d (VStr ka)79 yamlmap <- flip mapM assocs $ \(ka, va) -> do 80 ka' <- toYaml d $ VStr ka 82 81 va' <- toYaml d va 83 return (ka', va') )82 return (ka', va') 84 83 return $ YamlMap Nothing yamlmap 85 84 hashToYaml _ r = error ("unexpected node: " ++ show r)
