From bfae04ad84e1f670e2ab394447fc40e7b1c799a7 Mon Sep 17 00:00:00 2001 From: "matthias@arch" Date: Thu, 23 Nov 2023 22:31:47 +0100 Subject: [PATCH] respect indentation level with sidenav --- html-preprocessor | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/html-preprocessor b/html-preprocessor index cf72eae..94dda41 100755 --- a/html-preprocessor +++ b/html-preprocessor @@ -16,13 +16,13 @@ TODO: ************************************************************ SETTINGS ************************************************************ """ sidenav_format = """\ -
- -
- """ +
+ +
+""" sidenav_content_link = "
  • #name
  • " sidenav_content_section = "
  • #name
  • " @@ -271,16 +271,16 @@ class Sidenav: content_i = i break if content_i >= 0: - sidenav.pop(content_i) + indent = sidenav.pop(content_i).replace("#sidenav-content", "") added_links = [] for i in reversed(range(len(Sidenav.entries))): entry = Sidenav.entries[i] if entry[0] == Sidenav.LINK: if entry[2] in added_links: continue # no duplicates added_links.append(entry[2]) - sidenav.insert(content_i, sidenav_content_link.replace("#name", entry[1]).replace("#link", entry[2])) + sidenav.insert(content_i, indent + sidenav_content_link.replace("#name", entry[1]).replace("#link", entry[2])) else: - sidenav.insert(content_i, sidenav_content_section.replace("#name", entry[1])) + sidenav.insert(content_i, indent + sidenav_content_section.replace("#name", entry[1])) sidenav_s = "" for line in sidenav: sidenav_s += line + "\n" # cant use "".join because of newlines return sidenav_s @@ -744,7 +744,10 @@ def parse_file(_file:str, variables:dict[str,str], remove_comments): p.command_end() if sidenav_include_pos >= 0: - return p.file[:sidenav_include_pos] + Sidenav.generate() + p.file[sidenav_include_pos:] + p.i = sidenav_include_pos # required before get_leading_whitespaces + p.find_line_end() # required before get_leading_whitespaces + indent = p.get_leading_whitespaces() + return p.file[:sidenav_include_pos] + Sidenav.generate().replace("\n", "\n" + indent) + p.file[sidenav_include_pos:] else: return p.file