I wonder if my filters/custom writers for converting plain output into "email" — something in between fully plain and fully markdown, configurable in various ways (through metadata) — and to Perl POD could profit from being rewritten as standalone scripts to be used with pandoc-lua. Both basically replace some elements in the AST with "plain" raw inline or block elements containing markup for the actual target format around the content of the original element. As Lua scripts they could take configuaration on the command line, using a pure Lua command line argument processor like Penlight's lapp rather than having to programmatically convert Pandoc metadata into a plain data structure with string/number leaves.

Den lör 21 jan. 2023 20:06John MacFarlane <fiddlosopher-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> skrev:
-- This Lua script, when run using `pandoc lua`, will create an HTML
-- file rosetta.html that compares how the same content is represented
-- in all the text markup languages pandoc supports:

local inp = [[
# Heading

## level 2

### level 3

#### level 4 with attributes {.blue #foobar}

- Unordered
- list

1. ordered
2. list

a) Lettered list

   with continuation paragraph

> Block quote

``` {.lua}
local formats = pandoc.writers
for format,_ in formats do
  print(format)
end
```

*emphasized text **with strong emphasis***

`verbatim text` and a [link with `verbatim`](http://example.com)
]]
local doc = pandoc.read(inp, "markdown")

local formats = pandoc.writers
-- remove binary formats:
formats.docx = nil
formats.pptx = nil
formats.odt = nil
formats.epub2 = nil
formats.epub3 = nil
formats.epub = nil
formats.chunkedhtml = nil
formats.biblatex = nil
formats.bibtex = nil
formats.csljson = nil

local blocks = {}

-- Table of code languages to use for highlighting, when it differs
-- from the format name:
local langs = {
  icml = "xml",
  jira = "xml",
  fb2 = "xml",
  docbook = "xml",
  docbook4 = "xml",
  docbook5 = "xml",
  commonmark = "markdown",
  commonmark_x = "markdown",
  context = "latex",
  dzslides = "html5",
  slideous = "html",
  slidy = "html",
  man = "troff",
  ms = "troff",
  gfm = "markdown",
  markdown_mmd = "multimarkdown",
  markdown_github = "markdown",
  revealjs = "html",
  beamer = "latex",
  ipynb = "json",
  opendocument = "xml",
  native = "haskell",
  html5 = "html",
  html4 = "html",
}

local sorted_formats = {}
for format,_ in pairs(formats) do
  table.insert(sorted_formats, format)
end
table.sort(sorted_formats)

-- construct document part for each format
for _,format in ipairs(sorted_formats) do
  table.insert(blocks, pandoc.Header(2, format))
  local lang = langs[format] or format
  table.insert(blocks,
      pandoc.CodeBlock(pandoc.write(doc, format), {class = lang}))
end

local template = pandoc.template.compile(pandoc.template.default("html5"))
local html = pandoc.write(pandoc.Pandoc(blocks,
                            {title = "Markup Rosetta Stone"}),
                "html5",
                { template = template })

io.open("rosetta.html", "w"):write(html)
print("Created rosetta.html")

--
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@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/CC299ED9-B166-4B45-AC42-9DA430CAA122%40gmail.com.

--
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/CADAJKhCWYdonBf1%2BJrrv1wAWj9ktm50WA54CbFnuQm1R0K%2BzRA%40mail.gmail.com.