I saw no answer to this one. Hopefully it just got lost.
Apologies to anyone who already got it.

Den fre 24 juni 2022 16:09BPJ <> skrev:
I have a not-so-old "pseudo-writer" implemented as a filter which mostly injects  tons of raw markup into the document tree so that the output of the plain writer looks like my target format, returning a table of filters at the end like this

``````lua
return {
  {
    Meta = get_config
  },
  {
    SmallCaps = SmallCaps,
    Str = Str
  },
  note_filter,
  main_filter
}
``````

where `get_config` just extracts some info from the metadata and populates a table declared at the top of the script which the functions in the other filters refer to.

Am I right that I in principle could convert this into a new style custom writer by removing the Meta filter, replacing `return {<filters>}` above with `local filters = {<filters>}` and adding the following at the bottom of the script?

``````lua
function Writer (doc, opts)
  get_config(doc.meta)
  for _,filter in ipairs(filters) do
    doc = doc:walk(filter)
  end
  doc.blocks = blocks
  return pandoc.write(doc, 'plain', opts)
``````

(This got me thinking: what if `walk` accepted one more argument which will be passed as an extra argument to the functions in the filters, which could be used to pass config and/or maintain state? It somehow feels more intuitive than defining a table outside the metadata handler which all handlers close around.)

(BTW the main reason that the `note_filter` is separate is that it needs to be topdown because it counts and collects the notes, while `main_filter` needs to be bottomup because it sometimes relies on the content of elements already having been processed. I was very happy when I realized that this would work!)

--
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/CADAJKhBPpu1%3DFnxP0byMDWGEBF-7XAV7mVc%2BTzDSPX2t2GXN%3Dg%40mail.gmail.com.