summaryrefslogtreecommitdiffstats
path: root/doc/build-aux
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2021-07-12 04:38:41 +0200
committerJan Tojnar <jtojnar@gmail.com>2021-07-12 22:57:28 +0200
commita49d36b979104205d016bb67d5ad6391df43e9ed (patch)
tree2225262eb047e66a032bec70fb8b5ffe605c5497 /doc/build-aux
parentc29191d61bbba6ea370c56ba3216af90429af84f (diff)
doc: Move lua filters to subdirectory
Diffstat (limited to 'doc/build-aux')
-rw-r--r--doc/build-aux/pandoc-filters/docbook-writer/labelless-link-is-xref.lua24
1 files changed, 24 insertions, 0 deletions
diff --git a/doc/build-aux/pandoc-filters/docbook-writer/labelless-link-is-xref.lua b/doc/build-aux/pandoc-filters/docbook-writer/labelless-link-is-xref.lua
new file mode 100644
index 000000000000..67569b020916
--- /dev/null
+++ b/doc/build-aux/pandoc-filters/docbook-writer/labelless-link-is-xref.lua
@@ -0,0 +1,24 @@
+local function starts_with(start, str)
+ return str:sub(1, #start) == start
+end
+
+local function escape_xml_arg(arg)
+ amps = arg:gsub('&', '&amp;')
+ amps_quotes = amps:gsub('"', '&quot;')
+ amps_quotes_lt = amps_quotes:gsub('<', '&lt;')
+
+ return amps_quotes_lt
+end
+
+function Link(elem)
+ has_no_content = #elem.content == 0
+ targets_anchor = starts_with('#', elem.target)
+ has_no_attributes = elem.title == '' and elem.identifier == '' and #elem.classes == 0 and #elem.attributes == 0
+
+ if has_no_content and targets_anchor and has_no_attributes then
+ -- xref expects idref without the pound-sign
+ target_without_hash = elem.target:sub(2, #elem.target)
+
+ return pandoc.RawInline('docbook', '<xref linkend="' .. escape_xml_arg(target_without_hash) .. '" />')
+ end
+end