From 6092143ed8cf2ecf5c6be2d79e92fb159279c64e Mon Sep 17 00:00:00 2001 From: despiegk Date: Sat, 19 Jul 2025 21:19:00 +0200 Subject: [PATCH] ... --- lib/web/doctreeclient/page.v | 22 +++++++++++++--------- lib/web/doctreeclient/page_test.v | 21 ++++++++++++++++++++- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/lib/web/doctreeclient/page.v b/lib/web/doctreeclient/page.v index 8f9d057a..89687613 100644 --- a/lib/web/doctreeclient/page.v +++ b/lib/web/doctreeclient/page.v @@ -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 diff --git a/lib/web/doctreeclient/page_test.v b/lib/web/doctreeclient/page_test.v index 74ef8f41..a7b0dc6b 100644 --- a/lib/web/doctreeclient/page_test.v +++ b/lib/web/doctreeclient/page_test.v @@ -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 } \ No newline at end of file