60 lines
2.0 KiB
Python
60 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
import importlib.util, re
|
|
SPEC = importlib.util.spec_from_file_location("qe", "/root/troupe-standup/wizard-work/ledger/queue-extract.py")
|
|
qm = importlib.util.module_from_spec(SPEC)
|
|
SPEC.loader.exec_module(qm)
|
|
content = open("/root/troupe-standup/WORK-QUEUE.md", encoding="utf-8").read()
|
|
lines, trailing = qm.split_lines(content)
|
|
fenced = qm.fence_mask(lines)
|
|
|
|
HEADING = qm.HEADING
|
|
ID_TOKEN = qm.ID_TOKEN
|
|
record_form = qm.record_form
|
|
|
|
# replicate first_record + later + boundaries
|
|
first_record = {}
|
|
for i, ln in enumerate(lines, 1):
|
|
if i in fenced:
|
|
continue
|
|
for m in ID_TOKEN.finditer(ln):
|
|
qid = m.group(0)
|
|
if qid not in first_record:
|
|
frm = record_form(ln, qid)
|
|
if frm:
|
|
first_record[qid] = (i, frm)
|
|
first_record_keys = {(qid, line) for qid, (line, frm) in first_record.items()}
|
|
print("first_record:")
|
|
for k, v in sorted(first_record.items()):
|
|
print(" ", k, v)
|
|
later = []
|
|
for i, ln in enumerate(lines, 1):
|
|
if i in fenced or not ln.startswith("**"):
|
|
continue
|
|
prev = lines[i - 2].strip() if i >= 2 else ""
|
|
if prev != "" and prev != "---" and not prev.startswith("<!--"):
|
|
continue
|
|
for qid in ID_TOKEN.findall(ln):
|
|
frm = record_form(ln, qid)
|
|
if frm == "BOLD-LEAD" and qid in first_record:
|
|
later.append((i, qid, frm))
|
|
break
|
|
print("later:")
|
|
for x in later:
|
|
print(" ", x)
|
|
boundaries = sorted({h[0] for h in lines if False} | set())
|
|
# headings
|
|
headings = []
|
|
for i, ln in enumerate(lines, 1):
|
|
if i in fenced:
|
|
continue
|
|
m = HEADING.match(ln)
|
|
if m:
|
|
headings.append((i, m.group(1)))
|
|
print("headings near 12200-12270:")
|
|
for h in headings:
|
|
if 12200 <= h[0] <= 12270:
|
|
print(" ", h)
|
|
b = sorted({h[0] for h in headings} | {r[0] for r in first_record.values()} | {r[0] for r in later})
|
|
print("boundaries near 12200-12270:", [x for x in b if 12200 <= x <= 12270])
|
|
print("all boundaries after 12244:", [x for x in b if x > 12244][:5])
|