add basic include-code.lua script
This commit is contained in:
parent
0737a75e7e
commit
54dcee4dc9
3
fixtures/inc.sql
Normal file
3
fixtures/inc.sql
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
DROP SCHEMA IF EXISTS maryam CASCADE;
|
||||||
|
|
||||||
|
CREATE SCHEMA maryam;
|
9
fixtures/include-code.md
Normal file
9
fixtures/include-code.md
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
```{.sql include=fixtures/inc.sql ranges=2-$ }
|
||||||
|
will be removed by include
|
||||||
|
```
|
||||||
|
|
||||||
|
```sql
|
||||||
|
SELECT * FROM source;
|
||||||
|
```
|
||||||
|
|
58
include-code.lua
Normal file
58
include-code.lua
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
local system = require 'pandoc.system'
|
||||||
|
|
||||||
|
local function get_file(filename)
|
||||||
|
local sysdir = system.get_working_directory()
|
||||||
|
for k,v in pairs(PANDOC_STATE.resource_path) do
|
||||||
|
local path = sysdir.."/"..v.."/"..filename
|
||||||
|
local f = io.open(path, "r")
|
||||||
|
if f ~= nil then
|
||||||
|
return f
|
||||||
|
else
|
||||||
|
io.stderr:write(string.format("file not found, content of code block not replaced: %s", filename))
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_content(file, ranges)
|
||||||
|
if ranges == nil then
|
||||||
|
return file:read "*a"
|
||||||
|
end
|
||||||
|
print(ranges)
|
||||||
|
|
||||||
|
local intervals = {}
|
||||||
|
for interval in ranges:gmatch('[^,%s]+') do
|
||||||
|
table.insert(intervals, interval)
|
||||||
|
end
|
||||||
|
|
||||||
|
local current_line = 0
|
||||||
|
for k, interval in pairs(intervals) do
|
||||||
|
print("handling interval", interval)
|
||||||
|
local first = 0
|
||||||
|
local last = 0
|
||||||
|
-- inspect interval
|
||||||
|
if string.find(interval, '-') then
|
||||||
|
-- we have an interval
|
||||||
|
first, last = interval:match("([0-9]+)-([0-9]+)")
|
||||||
|
print(first, last)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function CodeBlock(elem)
|
||||||
|
if (elem.attributes['include'] ~= nil) then
|
||||||
|
local filename = elem.attributes['include']
|
||||||
|
local f = get_file(filename)
|
||||||
|
|
||||||
|
if (f == nil) then
|
||||||
|
return elem
|
||||||
|
end
|
||||||
|
|
||||||
|
elem.text = get_content(f, elem.attributes['ranges'])
|
||||||
|
io.close(f)
|
||||||
|
end
|
||||||
|
return elem
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user