@@ -99,84 +99,64 @@ execBlockLuaFilter :: LuaState
9999 -> Map String (LuaFilterFunction Block)
100100 -> Block -> IO Block
101101execBlockLuaFilter lua fnMap x = do
102− let runFn :: PushViaFilterFunction Block a => LuaFilterFunction Block -> a
103− runFn fn = runLuaFilterFunction lua fn
104− let tryFilter :: String -> (LuaFilterFunction Block -> IO Block) -> IO Block
105− tryFilter fnName callFilterFn =
106− case Map.lookup fnName fnMap of
102+ let tryFilter :: String -> IO Block
103+ tryFilter filterFnName =
104+ case Map.lookup filterFnName fnMap of
107105 Nothing -> return x
108− Just fn -> callFilterFn fn
106+ Just fn -> runLuaFilterFunction lua fn x
109107 case x of
110− HorizontalRule -> tryFilter "HorizontalRule" runFn
111− Null -> tryFilter "Null" runFn
112− BlockQuote blcks -> tryFilter "BlockQuote" $ \fn -> runFn fn blcks
113− BulletList items -> tryFilter "BulletList" $ \fn -> runFn fn items
114− CodeBlock attr code -> tryFilter "CodeBlock" $ \fn -> runFn fn attr code
115− DefinitionList lst -> tryFilter "DefinitionList" $ \fn -> runFn fn lst
116− Div attr content -> tryFilter "Div" $ \fn -> runFn fn content attr
117− Header lvl attr inlns -> tryFilter "Header" $ \fn -> runFn fn lvl inlns attr
118− LineBlock inlns -> tryFilter "LineBlock" $ \fn -> runFn fn inlns
119− Para inlns -> tryFilter "Para" $ \fn -> runFn fn inlns
120− Plain inlns -> tryFilter "Plain" $ \fn -> runFn fn inlns
121− RawBlock format str -> tryFilter "RawBlock" $ \fn -> runFn fn format str
122− OrderedList (num,sty,delim) items ->
123− tryFilter "OrderedList" $ \fn -> runFn fn items (num,sty,delim)
124− Table capt aligns widths headers rows ->
125− tryFilter "Table" $ \fn -> runFn fn capt aligns widths headers rows
108+ BlockQuote _ -> tryFilter "BlockQuote"
109+ BulletList _ -> tryFilter "BulletList"
110+ CodeBlock _ _ -> tryFilter "CodeBlock"
111+ DefinitionList _ -> tryFilter "DefinitionList"
112+ Div _ _ -> tryFilter "Div"
113+ Header _ _ _ -> tryFilter "Header"
114+ HorizontalRule -> tryFilter "HorizontalRule"
115+ LineBlock _ -> tryFilter "LineBlock"
116+ Null -> tryFilter "Null"
117+ Para _ -> tryFilter "Para"
118+ Plain _ -> tryFilter "Plain"
119+ RawBlock _ _ -> tryFilter "RawBlock"
120+ OrderedList _ _ -> tryFilter "OrderedList"
121+ Table _ _ _ _ _ -> tryFilter "Table"
126122
127123execInlineLuaFilter :: LuaState
128124 -> Map String (LuaFilterFunction Inline)
129125 -> Inline -> IO Inline
130126execInlineLuaFilter lua fnMap x = do
131− let runFn :: PushViaFilterFunction Inline a => LuaFilterFunction Inline -> a
132− runFn fn = runLuaFilterFunction lua fn
133− let tryFilter :: String -> (LuaFilterFunction Inline -> IO Inline) -> IO Inline
134− tryFilter fnName callFilterFn =
135− case Map.lookup fnName fnMap of
127+ let tryFilter :: String -> IO Inline
128+ tryFilter filterFnName =
129+ case Map.lookup filterFnName fnMap of
136130 Nothing -> return x
137− Just fn -> callFilterFn fn
138− let tryFilterAlternatives :: [(String, LuaFilterFunction Inline -> IO Inline)] -> IO Inline
131+ Just fn -> runLuaFilterFunction lua fn x
132+ let tryFilterAlternatives :: [String] -> IO Inline
139133 tryFilterAlternatives [] = return x
140− tryFilterAlternatives ((fnName, callFilterFn) : alternatives) =
134+ tryFilterAlternatives (fnName : alternatives) =
141135 case Map.lookup fnName fnMap of
142136 Nothing -> tryFilterAlternatives alternatives
143− Just fn -> callFilterFn fn
137+ Just fn -> runLuaFilterFunction lua fn x
144138 case x of
145− LineBreak -> tryFilter "LineBreak" runFn
146− SoftBreak -> tryFilter "SoftBreak" runFn
147− Space -> tryFilter "Space" runFn
148− Cite cs lst -> tryFilter "Cite" $ \fn -> runFn fn lst cs
149− Code attr str -> tryFilter "Code" $ \fn -> runFn fn str attr
150− Emph lst -> tryFilter "Emph" $ \fn -> runFn fn lst
151− Note blks -> tryFilter "Note" $ \fn -> runFn fn blks
152− RawInline f str -> tryFilter "RawInline" $ \fn -> runFn fn f str
153− SmallCaps lst -> tryFilter "SmallCaps" $ \fn -> runFn fn lst
154− Span attr lst -> tryFilter "Span" $ \fn -> runFn fn lst attr
155− Str str -> tryFilter "Str" $ \fn -> runFn fn str
156− Strikeout lst -> tryFilter "Strikeout" $ \fn -> runFn fn lst
157− Strong lst -> tryFilter "Strong" $ \fn -> runFn fn lst
158− Subscript lst -> tryFilter "Subscript" $ \fn -> runFn fn lst
159− Superscript lst -> tryFilter "Superscript" $ \fn -> runFn fn lst
160− Math DisplayMath lst -> tryFilterAlternatives
161− [ ("DisplayMath", \fn -> runFn fn lst)
162− , ("Math", \fn -> runFn fn DisplayMath lst)
163− ]
164− Math InlineMath lst -> tryFilterAlternatives
165− [ ("InlineMath", \fn -> runFn fn lst)
166− , ("Math", \fn -> runFn fn InlineMath lst)
167− ]
168− Quoted SingleQuote lst -> tryFilterAlternatives
169− [ ("SingleQuoted", \fn -> runFn fn lst)
170− , ("Quoted", \fn -> runFn fn SingleQuote lst)
171− ]
172− Quoted DoubleQuote lst -> tryFilterAlternatives
173− [ ("DoubleQuoted", \fn -> runFn fn lst)
174− , ("Quoted", \fn -> runFn fn DoubleQuote lst)
175− ]
176− Link attr txt (src, tit) -> tryFilter "Link" $
177− \fn -> runFn fn txt src tit attr
178− Image attr alt (src, tit) -> tryFilter "Image" $
179− \fn -> runFn fn alt src tit attr
139+ Cite _ _ -> tryFilter "Cite"
140+ Code _ _ -> tryFilter "Code"
141+ Emph _ -> tryFilter "Emph"
142+ Image _ _ _ -> tryFilter "Image"
143+ LineBreak -> tryFilter "LineBreak"
144+ Link _ _ _ -> tryFilter "Link"
145+ Math DisplayMath _ -> tryFilterAlternatives ["DisplayMath", "Math"]
146+ Math InlineMath _ -> tryFilterAlternatives ["InlineMath", "Math"]
147+ Note _ -> tryFilter "Note"
148+ Quoted DoubleQuote _ -> tryFilterAlternatives ["DoubleQuoted", "Quoted"]
149+ Quoted SingleQuote _ -> tryFilterAlternatives ["SingleQuoted", "Quoted"]
150+ RawInline _ _ -> tryFilter "RawInline"
151+ SmallCaps _ -> tryFilter "SmallCaps"
152+ SoftBreak -> tryFilter "SoftBreak"
153+ Space -> tryFilter "Space"
154+ Span _ _ -> tryFilter "Span"
155+ Str _ -> tryFilter "Str"
156+ Strikeout _ -> tryFilter "Strikeout"
157+ Strong _ -> tryFilter "Strong"
158+ Subscript _ -> tryFilter "Subscript"
159+ Superscript _ -> tryFilter "Superscript"
180160
181161instance StackValue LuaFilter where
182162 valuetype _ = Lua.TTABLE