Ok, I implemented a solution going off of the Table filter. This is the basic pattern:

function Table(table)
    for ibody=1, #table.bodies do
        local tbody = table.bodies[ibody]
        for irow=1, #tbody.body do
            local row = tbody.body[irow]
            for icell=1, #row.cells do
                local cell = row.cells[icell]
                for iblock=1, #cell.contents do
                    cell.contents[iblock] = cell.contents[iblock]:walk(some_filter_map)  -- cell blocks can be walk'ed again
...
end

This works, but is ugly because of all those nested loops.

I wonder is there a specific reason to exempt the element components like rows and cells from the normal visitor pattern?

On Monday, May 15, 2023 at 10:18:38 AM UTC+2 ThomasH wrote:
I want to modify how table cells are translated. I started out like with other AST types, e.g.

function Cell(cell)
   ... (do something with cell)
end

This function is never called, although the input document contains a table with cells.

I assume, element components like cells are treated differently (although they seem to appear in the AST like other AST nodes).

What is the correct way to write filter functions for element components?

Thanks, T.

--
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org.
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/e6ba297b-1a4b-42cc-adaa-1b831340f8c4n%40googlegroups.com.