1{ pkgs ? import ../../.. {} }:
2let
3 inherit (pkgs) lib;
4 manpageURLs = lib.importJSON (pkgs.path + "/doc/manpage-urls.json");
5in pkgs.writeText "link-manpages.lua" ''
6 --[[
7 Adds links to known man pages that aren't already in a link.
8 ]]
9
10 local manpage_urls = {
11 ${lib.concatStringsSep "\n" (lib.mapAttrsToList (man: url:
12 " [${builtins.toJSON man}] = ${builtins.toJSON url},") manpageURLs)}
13 }
14
15 traverse = 'topdown'
16
17 -- Returning false as the second value aborts processing of child elements.
18 function Link(elem)
19 return elem, false
20 end
21
22 function Code(elem)
23 local is_man_role = elem.classes:includes('interpreted-text') and elem.attributes['role'] == 'manpage'
24 if is_man_role and manpage_urls[elem.text] ~= nil then
25 return pandoc.Link(elem, manpage_urls[elem.text]), false
26 end
27 end
28''