diff --git a/main.go b/main.go index 3726a2f..5f08976 100644 --- a/main.go +++ b/main.go @@ -131,6 +131,6 @@ func main() { } } - my_children := get_children(0, headings) + my_children := get_child_indices(0, headings) fmt.Printf("%v\n", my_children) } diff --git a/tree.go b/tree.go index f3d4946..e71505e 100644 --- a/tree.go +++ b/tree.go @@ -31,3 +31,34 @@ func get_children(header_index int, headings []heading) []heading { return children } + +func get_child_indices(header_index int, headings []heading) []int { + var children []int + + parent_level := get_heading_level(headings[header_index].text) + + next_level := get_heading_level(headings[header_index+1].text) + + child_level := 0 + + if next_level <= parent_level { + return nil + } else { + child_level = next_level + } + cur_level := 0 + + for i := (header_index + 1); i < len(headings); i++ { + cur_level = get_heading_level(headings[i].text) + + if cur_level == child_level { + children = append(children, i) + } + + if cur_level < child_level { + break + } + } + + return children +}