pandoc/test/lua/blocks-filter.lua
Albert Krewinkel 672a4bdd1d Lua filters: allow filtering of element lists (#6040)
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
2020-01-15 14:26:00 -08:00

8 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