interpretCommands _ _ _ [] = return []
interpretCommands env table page blocks = mapM interpBlock blocks
where
+ ctx :: InterpreterContext
+ ctx = InterpreterContext {
+ ctxPage = page
+ , ctxTree = blocks
+ , ctxStorage = envStorage env
+ , ctxSysConf = envSysConf env
+ }
+
interpBlock :: BlockElement -> IO BlockElement
interpBlock (List list) = interpList list >>= return . List
interpBlock (DefinitionList defs) = mapM interpDefinition defs >>= return . DefinitionList
-> fail ("no such interpreter: " ++ bCmdName cmd)
Just interp
- -> bciInterpret interp cmd page (envStorage env) (envSysConf env)
+ -> bciInterpret interp ctx cmd
>>=
interpBlock
-> fail ("no such interpreter: " ++ iCmdName cmd)
Just interp
- -> iciInterpret interp cmd page (envStorage env) (envSysConf env)
+ -> iciInterpret interp ctx cmd
>>=
interpInline