mirror of
https://github.com/jgm/pandoc.git
synced 2026-08-29 01:41:20 +08:00
672a4bdd1d
Lists of Inline and Block elements can now be filtered via `Inlines` and
`Blocks` functions, respectively. This is helpful if a filter conversion
depends on the order of elements rather than a single element.
For example, the following filter can be used to remove all spaces
before a citation:
function isSpaceBeforeCite (spc, cite)
return spc and spc.t == 'Space'
and cite and cite.t == 'Cite'
end
function Inlines (inlines)
for i = #inlines-1,1,-1 do
if isSpaceBeforeCite(inlines[i], inlines[i+1]) then
inlines:remove(i)
end
end
return inlines
end
Closes: #6038
9 lines
330 B
Lua
9 lines
330 B
Lua
function Blocks (blks)
|
|
-- verify that this looks like a `pandoc.List`
|
|
if not blks.find or not blks.map or not blks.filter then
|
|
error("table doesn't seem to be an instance of pandoc.List")
|
|
end
|
|
-- return plain block containing the number of elements in the list
|
|
return {pandoc.Plain {pandoc.Str(tostring(#blks))}}
|
|
end
|