Changeset 11614 for src/Pugs/Prim/Yaml.hs
- Timestamp:
- 07/18/06 16:15:40 (2 years ago)
- Files:
-
- 1 modified
-
src/Pugs/Prim/Yaml.hs (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/Pugs/Prim/Yaml.hs
r10179 r11614 22 22 23 23 fromYaml :: YamlNode -> Eval Val 24 fromYaml Mk YamlNode{nodeElem=YamlNil} = return VUndef25 fromYaml Mk YamlNode{nodeElem=YamlStr str} = return $ VStr $ decodeUTF8 $ unpackBuf str26 fromYaml Mk YamlNode{nodeElem=YamlSeq nodes} = do24 fromYaml MkNode{n_elem=ENil} = return VUndef 25 fromYaml MkNode{n_elem=EStr str} = return $ VStr $ decodeUTF8 $ unpackBuf str 26 fromYaml MkNode{n_elem=ESeq nodes} = do 27 27 vals <- mapM fromYaml nodes 28 28 av <- liftSTM $ newTVar $ 29 29 IntMap.fromAscList ([0..] `zip` map lazyScalar vals) 30 30 return $ VRef (arrayRef av) 31 fromYaml Mk YamlNode{nodeElem=YamlMap nodes, nodeTag=tag} = do31 fromYaml MkNode{n_elem=EMap nodes, n_tag=tag} = do 32 32 case tag of 33 33 Nothing -> do … … 70 70 71 71 strNode :: String -> YamlNode 72 strNode = mkNode . YamlStr . packBuf72 strNode = mkNode . EStr . packBuf 73 73 74 74 {- … … 80 80 81 81 toYaml :: (?seen :: IntSet.IntSet) => Val -> Eval YamlNode 82 toYaml VUndef = return $ mkNode YamlNil82 toYaml VUndef = return $ mkNode ENil 83 83 toYaml (VBool x) = return $ boolToYaml x 84 84 toYaml (VStr str) = return $ strNode (encodeUTF8 str) 85 85 toYaml v@(VRef r) = do 86 86 ptr <- liftIO $ addressOf r 87 if IntSet.member ptr ?seen then return nilNode{ n odeAnchor = MkYamlReference ptr } else do87 if IntSet.member ptr ?seen then return nilNode{ n_anchor = AReference ptr } else do 88 88 let ?seen = IntSet.insert ptr ?seen 89 89 node <- ifValTypeIsa v "Hash" (hashToYaml r) $ do … … 93 93 VObject _ -> return nodes 94 94 _ -> liftIO $ toYamlNode r 95 return node{ n odeAnchor = MkYamlAnchor ptr }95 return node{ n_anchor = AAnchor ptr } 96 96 toYaml (VList nodes) = do 97 97 n <- mapM toYaml nodes 98 return $ mkNode ( YamlSeq n)99 -- fmap YamlSeq$ mapM toYaml nodes98 return $ mkNode (ESeq n) 99 -- fmap ESeq$ mapM toYaml nodes 100 100 toYaml v@(VObject obj) = do 101 101 -- ... dump the objAttrs … … 108 108 toYaml (VRule MkRulePGE{rxRule=rule, rxGlobal=global, rxStringify=stringify, rxAdverbs=adverbs}) = do 109 109 adverbs' <- toYaml adverbs 110 return . mkTagNode "tag:pugs:Rule" $ YamlMap110 return . mkTagNode "tag:pugs:Rule" $ EMap 111 111 [ (strNode "rule", strNode rule) 112 112 , (strNode "global", boolToYaml global) … … 124 124 va' <- toYaml va 125 125 return (ka', va') 126 return $ mkNode ( YamlMap yamlmap)126 return $ mkNode (EMap yamlmap) 127 127 hashToYaml r = error ("unexpected node: " ++ show r) 128 128
