diff --git a/Cargo.toml b/Cargo.toml index 737475f..016f960 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,13 +21,13 @@ unicode-width = "0.2" backtrace = { version = "0.3", optional=true } thiserror = "2.0.0" log = { version = "0.4.20", optional = true } -nom = "7.1.3" +nom = { version = "7.1.3", optional = true } [features] html_trace = ["dep:log"] html_trace_bt = ["html_trace", "dep:backtrace"] default = [] -css = [] +css = [ "dep:nom" ] css_ext = ["css"] [[example]] diff --git a/src/lib.rs b/src/lib.rs index c44f276..b0248c6 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1981,8 +1981,6 @@ fn do_render_node( }) } Ul(items) => { - renderer.start_block()?; - let prefix = renderer.unordered_item_prefix(); let prefix_len = prefix.len(); @@ -2013,8 +2011,6 @@ fn do_render_node( } } Ol(start, items) => { - renderer.start_block()?; - let num_items = items.len(); // The prefix width could be at either end if the start is negative. diff --git a/src/render/text_renderer.rs b/src/render/text_renderer.rs index 1261731..145669d 100644 --- a/src/render/text_renderer.rs +++ b/src/render/text_renderer.rs @@ -975,6 +975,33 @@ impl std::fmt::Debug for SubRenderer { } } +impl std::fmt::Display for SubRenderer { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + writeln!(f, "SubRenderer(width={})", self.width)?; + writeln!(f, " Lines: {}", self.lines.len())?; + for line in &self.lines { + match line { + RenderLine::Text(tagged_line) => { + writeln!(f, " {}", tagged_line.to_string())?; + } + RenderLine::Line(_) => { + writeln!(f, " <<>>")?; + } + } + } + if let Some(wrapping) = &self.wrapping { + writeln!(f, " WrappedBlock text:")?; + for line in &wrapping.text { + writeln!(f, " {}", line.to_string())?; + } + writeln!(f, " WrappedBlock cur line:")?; + writeln!(f, " {}", wrapping.line.to_string())?; + writeln!(f, " WrappedBlock Word: [[{}]]", wrapping.word.to_string())?; + } + writeln!(f) + } +} + /// Rendering options. #[derive(Clone)] #[non_exhaustive] diff --git a/src/tests.rs b/src/tests.rs index cf19aee..07828e0 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -778,7 +778,6 @@ bit of text to wrap - * This is a bit of text to @@ -803,16 +802,13 @@ fn test_wrap_max2() { "#, r#"plain para at the full screen width - * bullet point uses same width so its margin is 2 chars further right - * nested bullets in turn move 2 chars right each time - * result: you never get text squashed too narrow @@ -822,6 +818,58 @@ full screen width ); } +#[test] +fn test_nested_ul() { + test_html( + br" +
    +
  • Item 1
  • +
  • Item 2 +
      +
    • SubItem 2.1
    • +
    • SubItem 2.2 +
        +
      • Sub Item 2.2.1
      • +
      +
    • +
    +
", + r#"* Item 1 +* Item 2 + * SubItem 2.1 + * SubItem 2.2 + * Sub Item 2.2.1 +"#, + 80, + ); +} + +#[test] +fn test_nested_ol() { + test_html( + br" +
    +
  1. Item 1
  2. +
  3. Item 2 +
      +
    1. SubItem 2.1
    2. +
    3. SubItem 2.2 +
        +
      1. Sub Item 2.2.1
      2. +
      +
    4. +
    +
", + r#"1. Item 1 +2. Item 2 + 1. SubItem 2.1 + 2. SubItem 2.2 + 1. Sub Item 2.2.1 +"#, + 80, + ); +} + #[test] fn test_wrap_word_boundaries() { test_html(br#"Hello there boo"#, "Hello there boo\n", 20); @@ -917,7 +965,6 @@ fn test_subblock() { "#, r"Here's a [link][1]. - * Bullet * Bullet * Bullet @@ -1295,7 +1342,6 @@ fn test_trivial_decorator() { "#, r"Here's a link. - Bullet Bullet Bullet