74 lines
2.1 KiB
HTML
74 lines
2.1 KiB
HTML
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce porta
|
|
mattis neque, quis molestie nunc faucibus vitae. Phasellus vel commodo
|
|
dolor, at faucibus arcu. Curabitur sit amet magna a neque euismod
|
|
feugiat non et diam. Aliquam sit amet libero enim. Integer dignissim
|
|
ullamcorper felis, ac ultrices turpis congue vel. Nulla id tempus orci.
|
|
Curabitur ac vulputate tellus. Integer fermentum tempor facilisis. Duis
|
|
egestas luctus tristique. Maecenas vitae arcu sit amet justo feugiat
|
|
imperdiet. Nunc luctus erat sed ligula convallis hendrerit.</p>
|
|
<div data-include="README.md , filter.lua , ,">
|
|
# Piecewise Readable Filter
|
|
|
|
This is a pandoc filter manipulating
|
|
[fenced_divs](https://pandoc.org/MANUAL.html#extension-fenced_divs) in
|
|
pandoc markdown.
|
|
|
|
Inspired by [this
|
|
joke](https://www.zhihu.com/question/586807834/answer/2973535981).
|
|
|
|
useful refs:
|
|
- https://pandoc.org/lua-filters.html
|
|
|
|
local function words(s)
|
|
local res = {}
|
|
for part in s:gmatch("[^,]+") do -- split by commas
|
|
local trimmed = part:match("^%s*(.-)%s*$") -- remove
|
|
leading/trailing spaces
|
|
if trimmed ~= "" then
|
|
table.insert(res, trimmed)
|
|
end
|
|
end
|
|
return res
|
|
end
|
|
|
|
local function label2Block(labels)
|
|
local contents = ""
|
|
for _,l in ipairs(words(labels)) do
|
|
-- use file for now.
|
|
local fh = io.open(l, "r")
|
|
if not fh then
|
|
io.stderr:write("Cannot open file: " .. l .. "\n")
|
|
return { pandoc.Plain { pandoc.Str("[Error: cannot read file
|
|
" .. l .. "]") } }
|
|
end
|
|
contents = contents .. fh:read("*a")
|
|
fh:close()
|
|
end
|
|
return { pandoc.Plain { pandoc.Str(contents) } }
|
|
end
|
|
|
|
function Div(e)
|
|
local include = e.attributes["include"]
|
|
if include then
|
|
local blocks = label2Block(include)
|
|
-- Replace the Div contents
|
|
return pandoc.Div(blocks, e.attr)
|
|
end
|
|
return nil -- no change
|
|
end
|
|
|
|
</div>
|
|
<div class="Theorem">
|
|
<p>test thm1</p>
|
|
</div>
|
|
<div id="thm2" class="Theorem">
|
|
<p>test thm2</p>
|
|
</div>
|
|
<div id="thm3" class="Theorem">
|
|
<p>test thm3</p>
|
|
</div>
|
|
<div id="special" class="sidebar">
|
|
<p>Here is a paragraph.</p>
|
|
<p>And another.</p>
|
|
</div>
|