@@ -107,24 +107,30 @@ execBlockLuaFilter :: LuaState
107107 -> Map String (LuaFilterFunction Block)
108108 -> Block -> IO Block
109109execBlockLuaFilter lua fnMap x = do
110− let filterOrId constr = case Map.lookup constr fnMap of
111− Nothing -> return x
112− Just fn -> runLuaFilterFunction lua fn x
110+ let runFn :: PushViaFilterFunction Block a => LuaFilterFunction Block -> a
111+ runFn fn = runLuaFilterFunction lua fn
112+ let tryFilter :: String -> (LuaFilterFunction Block -> IO Block) -> IO Block
113+ tryFilter fnName callFilterFn =
114+ case Map.lookup fnName fnMap of
115+ Nothing -> return x
116+ Just fn -> callFilterFn fn
113117 case x of
114− Plain _ -> filterOrId "Plain"
115− Para _ -> filterOrId "Para"
116− LineBlock _ -> filterOrId "LineBlock"
117− CodeBlock _ _ -> filterOrId "CodeBlock"
118− RawBlock _ _ -> filterOrId "RawBlock"
119− BlockQuote _ -> filterOrId "BlockQuote"
120− OrderedList _ _ -> filterOrId "OrderedList"
121− BulletList _ -> filterOrId "BulletList"
122− DefinitionList _ -> filterOrId "DefinitionList"
123− Header _ _ _ -> filterOrId "Header"
124− HorizontalRule -> filterOrId "HorizontalRule"
125− Table _ _ _ _ _ -> filterOrId "Table"
126− Div _ _ -> filterOrId "Div"
127− Null -> filterOrId "Null"
118+ HorizontalRule -> tryFilter "HorizontalRule" runFn
119+ Null -> tryFilter "Null" runFn
120+ BlockQuote blcks -> tryFilter "BlockQuote" $ \fn -> runFn fn blcks
121+ BulletList items -> tryFilter "BulletList" $ \fn -> runFn fn items
122+ CodeBlock attr code -> tryFilter "CodeBlock" $ \fn -> runFn fn attr code
123+ DefinitionList lst -> tryFilter "DefinitionList" $ \fn -> runFn fn lst
124+ Div attr content -> tryFilter "Div" $ \fn -> runFn fn content attr
125+ Header lvl attr inlns -> tryFilter "Header" $ \fn -> runFn fn lvl inlns attr
126+ LineBlock inlns -> tryFilter "LineBlock" $ \fn -> runFn fn inlns
127+ Para inlns -> tryFilter "Para" $ \fn -> runFn fn inlns
128+ Plain inlns -> tryFilter "Plain" $ \fn -> runFn fn inlns
129+ RawBlock format str -> tryFilter "RawBlock" $ \fn -> runFn fn format str
130+ OrderedList (num,sty,delim) items ->
131+ tryFilter "OrderedList" $ \fn -> runFn fn items (num,sty,delim)
132+ Table capt aligns widths headers rows ->
133+ tryFilter "Table" $ \fn -> runFn fn capt aligns widths headers rows
128134
129135execInlineLuaFilter :: LuaState
130136 -> Map String (LuaFilterFunction Inline)