Changeset 8566 for src/Pugs/Prim/Yaml.hs

Show
Ignore:
Timestamp:
01/03/06 23:03:30 (3 years ago)
Author:
gaal
Message:

* beginning of .yaml emitter. "string".yaml.say segfaults, but hey,

it's a start :)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • src/Pugs/Prim/Yaml.hs

    r7826 r8566  
    33 
    44module Pugs.Prim.Yaml ( 
    5   evalYaml 
     5  evalYaml, dumpYaml 
    66) where 
    77import Pugs.Internals 
     
    3434    hv      <- liftSTM $ (newTVar (Map.fromList vals) :: STM IHash) 
    3535    return $ VRef (hashRef hv) 
     36 
     37dumpYaml :: Val -> Eval Val 
     38dumpYaml v = do 
     39    obj  <- toYaml =<< fromVal v 
     40    rv   <- liftIO (emitYaml obj) 
     41    case rv of 
     42        Left err  -> fail $ "YAML Emit Error: " ++ err 
     43        Right str -> return $ VStr str 
     44 
     45toYaml :: Val -> Eval YamlNode 
     46toYaml VUndef = return YamlNil 
     47toYaml (VStr str) = return $ YamlStr (encodeUTF8 str) 
     48toYaml (VList nodes) = do 
     49    fmap YamlSeq $ mapM toYaml nodes 
     50--toYaml (VHash hash) = do 
     51--    fmap YamlMap $ Map.toList hash 
     52 
     53 
     54