aboutsummaryrefslogtreecommitdiff
path: root/scripts/prepare_html_rules.py
blob: d2131b2afad0e97b3dff5018ec4c09aa3f94f9be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#!/usr/bin/env python3
"""Add ids to all rules based on their headline"""

import sys
import re

HEADER_RE = re.compile(r'<h\d')
DATA_NUMBER_RE = re.compile(r'data\-number="([^"]*)"')


def extract_headline_nr(line: str) -> str:
    """Extract the headline's number from it's data-number attribute"""
    m = DATA_NUMBER_RE.search(line)
    if m:
        return m.group(1)

    return ""


def main():
    """Add ids to all ordered lists in the input"""
    headline = ""
    items = []
    for line in sys.stdin.readlines():
        if HEADER_RE.match(line):
            headline = extract_headline_nr(line)
            h_idx = line.find('<h') + 3
            line = line[:h_idx] + ' class="rule"' + line[h_idx:]
        if '<ol' in line and headline:
            items.append(1)
        if '<li' in line and items:
            p = ".".join([str(i) for i in items])
            line = line.replace('<li', f'<li id="{headline}.{p}" class="rule"')
            items[-1] += 1
        if '</ol' in line:
            items.pop(-1)
        print(line, end="")


if __name__ == "__main__":
    main()