forked from lix-project/lix
3272afa17b
Python is only pulled into the build closure by Mercurial, which might end up being removed. Let’s port the script to jq, which is more likely to stay.
31 lines
947 B
Text
Executable file
31 lines
947 B
Text
Executable file
"\\[\\]\\{#(?<anchor>[^\\}]+?)\\}" as $empty_anchor_regex |
|
|
"\\[(?<text>[^\\]]+?)\\]\\{#(?<anchor>[^\\}]+?)\\}" as $anchor_regex |
|
|
|
|
|
|
def transform_anchors_html:
|
|
. | gsub($empty_anchor_regex; "<a name=\"" + .anchor + "\"></a>")
|
|
| gsub($anchor_regex; "<a href=\"#" + .anchor + "\" id=\"" + .anchor + "\">" + .text + "</a>");
|
|
|
|
|
|
def transform_anchors_strip:
|
|
. | gsub($empty_anchor_regex; "")
|
|
| gsub($anchor_regex; .text);
|
|
|
|
|
|
def map_contents_recursively(transformer):
|
|
. + {
|
|
Chapter: (.Chapter + {
|
|
content: .Chapter.content | transformer,
|
|
sub_items: .Chapter.sub_items | map(map_contents_recursively(transformer)),
|
|
}),
|
|
};
|
|
|
|
|
|
def process_command:
|
|
.[0] as $context |
|
|
.[1] as $body |
|
|
$body + {
|
|
sections: $body.sections | map(map_contents_recursively(if $context.renderer == "html" then transform_anchors_html else transform_anchors_strip end)),
|
|
};
|
|
|
|
process_command
|