2020-02-27 02:34:49 +01:00
|
|
|
#!/usr/bin/env python3
|
|
|
|
|
|
|
|
"""
|
|
|
|
Filter program for transforming the Pandoc AST
|
|
|
|
"""
|
|
|
|
|
|
|
|
import json
|
|
|
|
import sys
|
|
|
|
|
2021-12-14 00:23:13 +01:00
|
|
|
TITLE = "Documentation"
|
2020-02-27 02:34:49 +01:00
|
|
|
|
|
|
|
|
|
|
|
def main():
|
|
|
|
data = json.load(sys.stdin)
|
|
|
|
|
2022-04-24 19:14:26 +02:00
|
|
|
# Check and remove level 1 header
|
|
|
|
level1_header = [
|
2021-12-14 22:27:10 +01:00
|
|
|
(i, content) for i, (level, _, content)
|
|
|
|
in ((i, b["c"]) for i, b in enumerate(data["blocks"])
|
|
|
|
if b["t"] == "Header")
|
|
|
|
if level == 1]
|
2022-04-24 19:14:26 +02:00
|
|
|
if (len(level1_header) != 1
|
|
|
|
or level1_header[0][1] != [{"t": "Str", "c": TITLE}]):
|
|
|
|
print("ERROR: Document must contain single level 1 heading %r" % TITLE,
|
|
|
|
file=sys.stderr)
|
|
|
|
sys.exit(1)
|
|
|
|
for i, _ in reversed(level1_header):
|
2021-12-14 00:23:13 +01:00
|
|
|
del data["blocks"][i]
|
2022-04-24 19:14:26 +02:00
|
|
|
# Use level 1 heading as title
|
|
|
|
data["meta"]["title"] = {"t": "MetaInlines", "c": level1_header[0][1]}
|
2020-02-27 02:34:49 +01:00
|
|
|
|
|
|
|
json.dump(data, sys.stdout)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
main()
|