INNER CODE UNIT · Python
build_sections
Laurent00TT/PharosRAG · src/chunker/core.py:179
def build_sections(headings, doc_id, doc_end):
"""headings: [{idx, level, title, crumb}] in reading order -> section tree (idx ranges)."""
sections = []
for i, h in enumerate(headings):
end = doc_end
for j in range(i + 1, len(headings)):
if headings[j]["level"] <= h["level"]:
end = headings[j]["idx"]; break
parent = next((headings[k]["idx"] for k in range(i - 1, -1, -1)
if headings[k]["level"] < h["level"]), None)
sections.append(Section(
sec_id=f"{doc_id}::s{h['idx']}", doc_id=doc_id, level=h["level"], title=h["title"],
breadcrumb=h["crumb"], start_idx=h["idx"], end_idx=end,
parent_sec_id=f"{doc_id}::s{parent}" if parent is not None else None))
return sections
def _sentence_split(text, hi, lang):