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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.