Update Documentation
- added screenshot - added doc export using pandoc to html and pdf
This commit is contained in:
61
doc/tools/noexport-subtrees.lua
Normal file
61
doc/tools/noexport-subtrees.lua
Normal file
@@ -0,0 +1,61 @@
|
||||
--[[
|
||||
Remove all subtrees whose headlines contain class `noexport`.
|
||||
|
||||
License: MIT
|
||||
Copyright: © Albert Krewinkel
|
||||
]]
|
||||
|
||||
-- pandoc.utils.make_sections exists since pandoc 2.8
|
||||
PANDOC_VERSION:must_be_at_least {2,8}
|
||||
|
||||
local utils = require 'pandoc.utils'
|
||||
|
||||
-- Returns true iff a div is a section div.
|
||||
local function is_section_div (div)
|
||||
return div.t == 'Div'
|
||||
and div.classes[1] == 'section'
|
||||
and div.attributes.number
|
||||
end
|
||||
|
||||
-- Returns the header element of a section, or nil if the argument is not a
|
||||
-- section.
|
||||
local function section_header (div)
|
||||
if not div.t == 'Div' then return nil end
|
||||
local header = div.content and div.content[1]
|
||||
local is_header = is_section_div(div)
|
||||
and header
|
||||
and header.t == 'Header'
|
||||
return is_header and header or nil
|
||||
end
|
||||
|
||||
--- Remove remaining section divs
|
||||
local function flatten_sections (div)
|
||||
local header = section_header(div)
|
||||
if not header then
|
||||
return nil
|
||||
else
|
||||
header.identifier = div.identifier
|
||||
div.content[1] = header
|
||||
return div.content
|
||||
end
|
||||
end
|
||||
|
||||
function drop_noexport_sections (div)
|
||||
if div.classes:includes('noexport') then
|
||||
return {}
|
||||
end
|
||||
end
|
||||
|
||||
--- Setup the document for further processing by wrapping all
|
||||
--- sections in Div elements.
|
||||
function setup_document (doc)
|
||||
local sections = utils.make_sections(false, nil, doc.blocks)
|
||||
return pandoc.Pandoc(sections, doc.meta)
|
||||
end
|
||||
|
||||
return {
|
||||
{Pandoc = setup_document},
|
||||
{Div = drop_noexport_sections},
|
||||
{Div = flatten_sections}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user