diff options
| author | Jonas Smedegaard <dr@jones.dk> | 2025-03-15 07:36:30 +0100 |
|---|---|---|
| committer | Jonas Smedegaard <dr@jones.dk> | 2025-03-15 07:36:30 +0100 |
| commit | 7e681492040da157c293b8262d6b5fd67e921d98 (patch) | |
| tree | 1d85b5dbcb1dc81fa822a3a18938e061f5af122f /_extensions/ruc-play | |
| parent | b588215bdbd0bfacbb946e413396e069d26bebe2 (diff) | |
embed filter extensions in format extension
Diffstat (limited to '_extensions/ruc-play')
| -rw-r--r-- | _extensions/ruc-play/stylish-report/_extension.yaml | 3 | ||||
| -rw-r--r-- | _extensions/ruc-play/stylish-report/_extensions/pandoc-ext/abstract-section/_extension.yaml | 6 | ||||
| -rw-r--r-- | _extensions/ruc-play/stylish-report/_extensions/pandoc-ext/abstract-section/abstract-section.lua | 85 | ||||
| -rw-r--r-- | _extensions/ruc-play/stylish-report/_extensions/ruc-play/stylish-roles/_extension.yaml (renamed from _extensions/ruc-play/stylish-roles/_extension.yaml) | 0 | ||||
| -rw-r--r-- | _extensions/ruc-play/stylish-report/_extensions/ruc-play/stylish-roles/stylish-roles.lua (renamed from _extensions/ruc-play/stylish-roles/stylish-roles.lua) | 0 |
5 files changed, 94 insertions, 0 deletions
diff --git a/_extensions/ruc-play/stylish-report/_extension.yaml b/_extensions/ruc-play/stylish-report/_extension.yaml index 507eeaa..58eb145 100644 --- a/_extensions/ruc-play/stylish-report/_extension.yaml +++ b/_extensions/ruc-play/stylish-report/_extension.yaml @@ -4,6 +4,9 @@ version: 0.0.3 contributes: formats: common: + filters: + - stylish-roles + - abstract-section pdf: number-sections: true toc: true diff --git a/_extensions/ruc-play/stylish-report/_extensions/pandoc-ext/abstract-section/_extension.yaml b/_extensions/ruc-play/stylish-report/_extensions/pandoc-ext/abstract-section/_extension.yaml new file mode 100644 index 0000000..f6a946b --- /dev/null +++ b/_extensions/ruc-play/stylish-report/_extensions/pandoc-ext/abstract-section/_extension.yaml @@ -0,0 +1,6 @@ +name: abstract-section +author: Albert Krewinkel +version: 1.2.0 +contributes: + filters: + - abstract-section.lua diff --git a/_extensions/ruc-play/stylish-report/_extensions/pandoc-ext/abstract-section/abstract-section.lua b/_extensions/ruc-play/stylish-report/_extensions/pandoc-ext/abstract-section/abstract-section.lua new file mode 100644 index 0000000..4badeb4 --- /dev/null +++ b/_extensions/ruc-play/stylish-report/_extensions/pandoc-ext/abstract-section/abstract-section.lua @@ -0,0 +1,85 @@ +--[[ +abstract-section – move an "abstract" section into document metadata + +Copyright: © 2017–2023 Albert Krewinkel +License: MIT – see LICENSE file for details +]] +local stringify = (require 'pandoc.utils').stringify +local section_identifiers = { + abstract = true, +} +local collected = {} +--- The level of the highest heading that was seen so far. Abstracts +--- must be at or above this level to prevent nested sections from being +--- treated as metadata. Only top-level sections should become metadata. +local toplevel = 6 + +--- Extract abstract from a list of blocks. +local function abstract_from_blocklist (blocks) + local body_blocks = {} + local looking_at_section = false + + for _, block in ipairs(blocks) do + if block.t == 'Header' and block.level <= toplevel then + toplevel = block.level + if section_identifiers[block.identifier] then + looking_at_section = block.identifier + collected[looking_at_section] = {} + else + looking_at_section = false + body_blocks[#body_blocks + 1] = block + end + elseif looking_at_section then + if block.t == 'HorizontalRule' then + looking_at_section = false + else + local collect = collected[looking_at_section] + collect[#collect + 1] = block + end + else + body_blocks[#body_blocks + 1] = block + end + end + + return body_blocks +end + +Pandoc = function (doc) + local meta = doc.meta + + -- configure + section_identifiers_list = + (doc.meta['abstract-section'] or {})['section-identifiers'] + if section_identifiers_list and #section_identifiers_list > 0 then + section_identifiers = {} + for i, ident in ipairs(section_identifiers_list) do + section_identifiers[stringify(ident)] = true + end + end + -- unset config in meta + doc.meta['abstract-section'] = nil + + local blocks = {} + if PANDOC_VERSION >= {2,17} then + -- Walk all block lists by default + blocks = doc.blocks:walk{Blocks = abstract_from_blocklist} + elseif PANDOC_VERSION >= {2,9,2} then + -- Do the same with pandoc versions that don't have walk methods but the + -- `walk_block` function. + blocks = pandoc.utils.walk_block( + pandoc.Div(doc.blocks), + {Blocks = abstract_from_blocklist} + ).content + else + -- otherwise, just check the top-level block-list + blocks = abstract_from_blocklist(doc.blocks) + end + for metakey in pairs(section_identifiers) do + metakey = stringify(metakey) + local abstract = collected[metakey] + if not meta[metakey] and abstract and #abstract > 0 then + meta[metakey] = pandoc.MetaBlocks(abstract) + end + end + return pandoc.Pandoc(blocks, meta) +end diff --git a/_extensions/ruc-play/stylish-roles/_extension.yaml b/_extensions/ruc-play/stylish-report/_extensions/ruc-play/stylish-roles/_extension.yaml index 190c698..190c698 100644 --- a/_extensions/ruc-play/stylish-roles/_extension.yaml +++ b/_extensions/ruc-play/stylish-report/_extensions/ruc-play/stylish-roles/_extension.yaml diff --git a/_extensions/ruc-play/stylish-roles/stylish-roles.lua b/_extensions/ruc-play/stylish-report/_extensions/ruc-play/stylish-roles/stylish-roles.lua index 50caf71..50caf71 100644 --- a/_extensions/ruc-play/stylish-roles/stylish-roles.lua +++ b/_extensions/ruc-play/stylish-report/_extensions/ruc-play/stylish-roles/stylish-roles.lua |
