52 lines
1.9 KiB
Python
52 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
import importlib.util
|
|
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
|
|
|
|
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)))
|
|
heading_ids = {h[1] for h in headings}
|
|
|
|
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 = {qid: v for qid, v in first_record.items() if qid not in heading_ids}
|
|
|
|
# boundaries
|
|
b = set()
|
|
for h in headings: b.add(h[0])
|
|
for qid, (line, frm) in first_record.items(): b.add(line)
|
|
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
|
|
for (i, qid, frm) in later: b.add(i)
|
|
|
|
print("12261 in boundaries?", 12261 in b)
|
|
print("12261 is heading?", any(h[0]==12261 for h in headings))
|
|
print("12261 in first_record values?", any(l==12261 for l in first_record.values()))
|
|
print("12261 in later?", any(x[0]==12261 for x in later))
|
|
print("first_record at 12261:", [(k,v) for k,v in first_record.items() if v[0]==12261])
|
|
print("later records:", later)
|