includes multiple files
This commit is contained in:
56
output.html
56
output.html
@@ -1,8 +1,12 @@
|
||||
<p>Here’s the pandoc README:</p>
|
||||
<div class="sourceCode" id="cb1" data-include="filter.hs"
|
||||
style="background-color: red"><pre
|
||||
class="sourceCode haskell"><code class="sourceCode haskell"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="dt">Foo</span><span class="ot">::</span> <span class="dt">Div</span> <span class="ot">-></span> <span class="dt">Div</span></span></code></pre></div>
|
||||
<div data-include="filter.hs">
|
||||
<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="filter.hs , filter.lua , ,">
|
||||
#!/usr/bin/env runhaskell
|
||||
-- filter.hs
|
||||
import Text.Pandoc.JSON
|
||||
@@ -24,6 +28,44 @@ doInclude x = return x
|
||||
|
||||
main :: IO ()
|
||||
main = toJSONFilter doInclude
|
||||
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>
|
||||
@@ -34,3 +76,7 @@ main = toJSONFilter doInclude
|
||||
<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>
|
||||
|
||||
Reference in New Issue
Block a user