Changeset 8587 for src/Pugs/Prim/Yaml.hs
- Timestamp:
- 01/05/06 23:48:09 (3 years ago)
- Files:
-
- 1 modified
-
src/Pugs/Prim/Yaml.hs (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim/Yaml.hs
r8586 r8587 49 49 --toYaml (VNum num) = return $ YamlStr -- better handled by pretty? 50 50 toYaml _ (VStr str) = return $ YamlStr (encodeUTF8 str) 51 toYaml (d+1) (VList nodes) = do52 fmap YamlSeq $ mapM (toYaml d) nodes53 51 toYaml (d+1) v@(VRef r) = do -- stolen from Pugs.Prim prettyVal. Can these be refactored together? 54 52 v' <- readRef r 55 ifValTypeIsa v "Pair" 56 (case v' of 57 VList [ks, vs] -> do 58 kStr <- toYaml d ks 59 vStr <- toYaml d vs 60 return $ YamlMap [(kStr, vStr)] -- assume a pair is a one-element hash 61 _ -> toYaml d v' -- XXX: probably broken to blithingly ignore ref levels here 53 t <- evalValType v 54 trace ("toYaml VRef: " ++ (show v) ++ " type=" ++ (show t)) $ return () 55 (ifValTypeIsa v "Hash" 56 (do 57 case r of 58 MkRef (IHash hv) -> do 59 h <- hash_fetch hv 60 let assocs = Map.toList h 61 yamlmap <- mapM ( \(k, v) -> do 62 k' <- toYaml d (VStr k) 63 v' <- toYaml d v 64 return (k', v')) assocs 65 return $ YamlMap yamlmap 66 _ -> error ("can't process hash: " ++ show v') -- XXX 62 67 ) 63 68 (do nodes <- toYaml d v' 64 69 ifValTypeIsa v "Array" 65 70 (return $ nodes) 66 (ifValTypeIsa v "Hash" 67 --(return $ YamlMap('{':(init (tail str))) ++ "}") 68 (return nodes) 69 (return $ YamlMap [(YamlStr "<ref>", nodes)])) -- XXX 71 (return $ YamlMap [(YamlStr "<ref>", nodes)])) -- XXX 70 72 ) 73 toYaml (d+1) (VList nodes) = do 74 trace ("toYaml VList: " ++ (show nodes)) $ return () 75 fmap YamlSeq $ mapM (toYaml d) nodes 71 76 toYaml _ v = return $ YamlStr $ encodeUTF8 $ pretty v 72 77 73 78 74 79 80 {- 81 ifValTypeIsa v "Pair" 82 (case v' of 83 VList [ks, vs] -> do 84 kStr <- toYaml d ks 85 vStr <- toYaml d vs 86 return $ YamlMap [(kStr, vStr)] -- assume a pair is a one-element hash 87 _ -> toYaml d v' -- XXX: probably broken to blithingly ignore ref levels here 88 ) 89 (ifValTypeIsa v "Hash" 90 --fmap YamlMap $ mapM (\(k, v) -> do {k' <- toYaml k; v' <- toYaml v; return (k', v')}) Map.toList =<< hash_fetch v') 91 (do 92 case r of 93 MkRef (IHash hv) -> do 94 h <- hash_fetch hv 95 let assocs = Map.toList h 96 yamlmap <- mapM (\(k, v) -> do 97 k' <- toYaml d (VStr k) 98 v' <- toYaml d v 99 return (k', v')) assocs 100 return $ YamlMap yamlmap 101 _ -> error ("can't process hash: " ++ show v') -- XXX 102 ) 103 (do nodes <- toYaml d v' 104 ifValTypeIsa v "Array" 105 (return $ nodes) 106 (return $ YamlMap [(YamlStr "<ref>", nodes)])) -- XXX 107 ) 108 -}
