This commit is contained in:
2025-07-19 21:19:00 +02:00
parent d469869b14
commit 6092143ed8
2 changed files with 33 additions and 10 deletions

View File

@@ -31,10 +31,8 @@ pub fn set_titles(page string, maxnr int) string {
mut current_numbers := []int{len: 6, init: 0} // Support up to H6, initialize with 0s
mut has_h1 := false
mut effective_maxnr := maxnr
if effective_maxnr == 0 {
effective_maxnr = 3 // Default to H3 if maxnr is not set
}
mut effective_maxnr := if maxnr > 0 { maxnr } else { 6 }
autonumber := maxnr > 0
lines := page.split_into_lines()
for line in lines {
@@ -76,11 +74,13 @@ pub fn set_titles(page string, maxnr int) string {
}
mut new_prefix := ""
for i := 0; i < numbering_hash_count; i++ {
if i > 0 && current_numbers[i] == 0 && current_numbers[i-1] > 0{
current_numbers[i] = 1
if autonumber {
for i := 0; i < numbering_hash_count; i++ {
if i > 0 && current_numbers[i] == 0 && current_numbers[i - 1] > 0 {
current_numbers[i] = 1
}
new_prefix += '${current_numbers[i]}.'
}
new_prefix += '${current_numbers[i]}.'
}
// Extract the original title text (after hashes and spaces)
@@ -109,7 +109,11 @@ pub fn set_titles(page string, maxnr int) string {
}
new_line += " ${new_prefix} ${original_title_text}"
if autonumber {
new_line += " ${new_prefix} ${original_title_text}"
} else {
new_line += " ${original_title_text}"
}
result_lines << new_line
}else {
result_lines << line

View File

@@ -60,7 +60,7 @@ Even more content.
### 1.2.1. Sub-subsection B.1
#### Sub-subsection B.1.1 (should not be numbered)
"
assert doctreeclient.set_titles(page1, 0) == expected1
assert doctreeclient.set_titles(page1, 3) == expected1
// Test case 2: maxnr = 2
page2 := "
@@ -142,4 +142,23 @@ Some text.
### 2.1.1. Sub-principle 44
"
assert doctreeclient.set_titles(page6, 3) == expected6
// Test case 7: maxnr = 0, no numbering but still shift headings
page7 := "
## Core Architectural Principles
Some text.
### Sub-principle 1
### Sub-principle 2
## Core Architectural Principles 2
#### Sub-principle 44
"
expected7 := "
# Core Architectural Principles
Some text.
## Sub-principle 1
## Sub-principle 2
# Core Architectural Principles 2
### Sub-principle 44
"
assert doctreeclient.set_titles(page7, 0) == expected7
}