Skip to content
Snippets Groups Projects
Commit 5120d180 authored by SamEdwardes's avatar SamEdwardes
Browse files

Update quarto example

parent 24b7a77a
No related branches found
No related tags found
No related merge requests found
index.html
index_files/*
name: include-code-files
author: Sam Edwardes
version: 1.0.0
quarto-required: ">=1.2.0"
contributes:
filters:
- include-code-files.lua
--- include-code-files.lua – filter to include code from source files
---
--- Copyright: © 2020 Bruno BEAUFILS
--- License: MIT – see LICENSE file for details
--- Dedent a line
local function dedent (line, n)
return line:sub(1,n):gsub(" ","") .. line:sub(n+1)
end
--- Filter function for code blocks
local function transclude (cb)
if cb.attributes.include then
local content = ""
local fh = io.open(cb.attributes.include)
if not fh then
io.stderr:write("Cannot open file " .. cb.attributes.include .. " | Skipping includes\n")
else
local number = 1
local start = 1
-- change hyphenated attributes to PascalCase
for i,pascal in pairs({"startLine", "endLine"})
do
local hyphen = pascal:gsub("%u", "-%0"):lower()
if cb.attributes[hyphen] then
cb.attributes[pascal] = cb.attributes[hyphen]
cb.attributes[hyphen] = nil
end
end
if cb.attributes.startLine then
cb.attributes.startFrom = cb.attributes.startLine
start = tonumber(cb.attributes.startLine)
end
for line in fh:lines ("L")
do
if cb.attributes.dedent then
line = dedent(line, cb.attributes.dedent)
end
if number >= start then
if not cb.attributes.endLine or number <= tonumber(cb.attributes.endLine) then
content = content .. line
end
end
number = number + 1
end
fh:close()
end
-- remove key-value pair for used keys
cb.attributes.include = nil
cb.attributes.startLine = nil
cb.attributes.endLine = nil
cb.attributes.dedent = nil
-- return final code block
return pandoc.CodeBlock(content, cb.attr)
end
end
return {
{ CodeBlock = transclude }
}
- source: example.qmd
- source: index.qmd
quarto-pub:
- id: 509ab2f5-de97-45f6-b5e8-bb1304c1797d
url: 'https://quartopub.com/sites/samedwardes/example-for-include-code-files-filter'
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment