blob: df4e2a04e94365c3ea847ebc3a44ae05c6286c40 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
local function parse_inlines(text)
return pandoc.read(text, "markdown").blocks[1].content
end
function Pandoc(doc)
local articles = pandoc.List()
local blocks = pandoc.Blocks({})
for _, block in ipairs(doc.blocks) do
if block.t == "Header" and block.level == 1 then
local date = block.attributes["data-date"]
if not date or date == "" then
error("article is missing data-date: " .. pandoc.utils.stringify(block.content))
end
block.attributes["data-date"] = nil
local label = pandoc.Inlines(block.content)
label:insert(pandoc.Span(parse_inlines(date), {class = "article-date"}))
articles:insert({pandoc.Plain({pandoc.Link(label, block.identifier .. ".html")})})
blocks:insert(block)
blocks:insert(pandoc.Para(parse_inlines(date)))
else
blocks:insert(block)
end
end
doc.blocks = blocks
doc.meta["article-list"] = pandoc.MetaBlocks({pandoc.BulletList(articles)})
return doc
end
|