{-# OPTIONS_GHC -fglasgow-exts -fallow-undecidable-instances -fno-warn-orphans -funbox-strict-fields -cpp #-}
module Pugs.CodeGen.PIL2 (
genPIL2,
genPIL2Perl5, genPIL2JSON, genPIL2YAML
) where
import Pugs.Internals
import Pugs.AST
import Pugs.PIL2.Instances ()
import Pugs.PIL2
import Pugs.Compile.PIL2
import DrIFT.Perl5
import DrIFT.JSON
import DrIFT.YAML
genPIL2 :: Eval Val
genPIL2 = do
penv <- compile ()
return . VStr . unlines $
[ "PIL_Environment"
, " { pilMain = (" ++ show (pilMain penv) ++ ")"
, " , pilGlob = (" ++ show (pilGlob penv) ++ ")"
, " }"
]
genPIL2Perl5 :: Eval Val
genPIL2Perl5 = do
penv <- compile () :: Eval PIL_Environment
return . VStr . unlines $ [showPerl5 penv]
genPIL2JSON :: Eval Val
genPIL2JSON = do
penv <- compile () :: Eval PIL_Environment
return . VStr . unlines $ [showJSON penv]
genPIL2YAML :: Eval Val
genPIL2YAML = do
penv <- compile () :: Eval PIL_Environment
yaml <- liftIO (showYaml penv)
return . VStr . unlines $ [yaml]