Lua filters: Remove special treatment of Quoted, Math.
No more SingleQuoted, DoubleQuoted, InlineMath, DisplayMath. This makes everything uniform and predictable, though it does open up a difference btw lua filters and custom writers.
This commit is contained in:
parent
5c80aca0e2
commit
780a65f8a8
2 changed files with 12 additions and 26 deletions
|
@ -101,6 +101,12 @@ data LuaFilter = LuaFilter LuaState FunctionMap
|
||||||
|
|
||||||
newtype LuaFilterFunction = LuaFilterFunction { functionIndex :: Int }
|
newtype LuaFilterFunction = LuaFilterFunction { functionIndex :: Int }
|
||||||
|
|
||||||
|
tryFilter :: StackValue a => LuaState -> FunctionMap -> String -> a -> IO a
|
||||||
|
tryFilter lua fnMap filterFnName x =
|
||||||
|
case Map.lookup filterFnName fnMap of
|
||||||
|
Nothing -> return x
|
||||||
|
Just fn -> runFilterFunction lua fn x
|
||||||
|
|
||||||
execDocLuaFilter :: LuaState
|
execDocLuaFilter :: LuaState
|
||||||
-> FunctionMap
|
-> FunctionMap
|
||||||
-> Pandoc -> IO Pandoc
|
-> Pandoc -> IO Pandoc
|
||||||
|
@ -116,34 +122,12 @@ execMetaLuaFilter lua fnMap (Pandoc meta blks) = do
|
||||||
execBlockLuaFilter :: LuaState
|
execBlockLuaFilter :: LuaState
|
||||||
-> FunctionMap
|
-> FunctionMap
|
||||||
-> Block -> IO Block
|
-> Block -> IO Block
|
||||||
execBlockLuaFilter lua fnMap x = do
|
execBlockLuaFilter lua fnMap x = tryFilter lua fnMap (show (toConstr x)) x
|
||||||
tryFilter lua fnMap (show (toConstr x)) x
|
|
||||||
|
|
||||||
tryFilter :: StackValue a => LuaState -> FunctionMap -> String -> a -> IO a
|
|
||||||
tryFilter lua fnMap filterFnName x =
|
|
||||||
case Map.lookup filterFnName fnMap of
|
|
||||||
Nothing -> return x
|
|
||||||
Just fn -> runFilterFunction lua fn x
|
|
||||||
|
|
||||||
tryFilterAlternatives :: StackValue a
|
|
||||||
=> LuaState -> FunctionMap -> [String] -> a -> IO a
|
|
||||||
tryFilterAlternatives _ _ [] x = return x
|
|
||||||
tryFilterAlternatives lua fnMap (fnName : alternatives) x =
|
|
||||||
case Map.lookup fnName fnMap of
|
|
||||||
Nothing -> tryFilterAlternatives lua fnMap alternatives x
|
|
||||||
Just fn -> runFilterFunction lua fn x
|
|
||||||
|
|
||||||
execInlineLuaFilter :: LuaState
|
execInlineLuaFilter :: LuaState
|
||||||
-> FunctionMap
|
-> FunctionMap
|
||||||
-> Inline -> IO Inline
|
-> Inline -> IO Inline
|
||||||
execInlineLuaFilter lua fnMap x = do
|
execInlineLuaFilter lua fnMap x = tryFilter lua fnMap (show (toConstr x)) x
|
||||||
let tryAlt = tryFilterAlternatives lua fnMap
|
|
||||||
case x of
|
|
||||||
Math DisplayMath _ -> tryAlt ["DisplayMath", "Math"] x
|
|
||||||
Math InlineMath _ -> tryAlt ["InlineMath", "Math"] x
|
|
||||||
Quoted DoubleQuote _ -> tryAlt ["DoubleQuoted", "Quoted"] x
|
|
||||||
Quoted SingleQuote _ -> tryAlt ["SingleQuoted", "Quoted"] x
|
|
||||||
_ -> tryFilter lua fnMap (show (toConstr x)) x
|
|
||||||
|
|
||||||
instance StackValue LuaFilter where
|
instance StackValue LuaFilter where
|
||||||
valuetype _ = Lua.TTABLE
|
valuetype _ = Lua.TTABLE
|
||||||
|
|
|
@ -1,7 +1,9 @@
|
||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
SingleQuoted = function (elem)
|
Quoted = function (elem)
|
||||||
elem.quotetype = "DoubleQuote"
|
if elem.quotetype == "SingleQuote" then
|
||||||
|
elem.quotetype = "DoubleQuote"
|
||||||
|
end
|
||||||
return elem
|
return elem
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue