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.
-- 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.