html: render tight lists
This commit is contained in:
		
					parent
					
						
							
								69d51a5032
							
						
					
				
			
			
				commit
				
					
						a9ce70aae3
					
				
			
		
					 1 changed files with 12 additions and 1 deletions
				
			
		
							
								
								
									
										13
									
								
								src/html.rs
									
										
									
									
									
								
							
							
						
						
									
										13
									
								
								src/html.rs
									
										
									
									
									
								
							| 
						 | 
					@ -71,6 +71,7 @@ struct Writer<'s, I: Iterator<Item = Event<'s>>, W> {
 | 
				
			||||||
    out: W,
 | 
					    out: W,
 | 
				
			||||||
    raw: Raw,
 | 
					    raw: Raw,
 | 
				
			||||||
    text_only: bool,
 | 
					    text_only: bool,
 | 
				
			||||||
 | 
					    list_tightness: Vec<bool>,
 | 
				
			||||||
    encountered_footnote: bool,
 | 
					    encountered_footnote: bool,
 | 
				
			||||||
    footnote_number: Option<std::num::NonZeroUsize>,
 | 
					    footnote_number: Option<std::num::NonZeroUsize>,
 | 
				
			||||||
    footnote_backlink_written: bool,
 | 
					    footnote_backlink_written: bool,
 | 
				
			||||||
| 
						 | 
					@ -83,6 +84,7 @@ impl<'s, I: Iterator<Item = Event<'s>>, W: std::fmt::Write> Writer<'s, I, W> {
 | 
				
			||||||
            out,
 | 
					            out,
 | 
				
			||||||
            raw: Raw::None,
 | 
					            raw: Raw::None,
 | 
				
			||||||
            text_only: false,
 | 
					            text_only: false,
 | 
				
			||||||
 | 
					            list_tightness: Vec::new(),
 | 
				
			||||||
            encountered_footnote: false,
 | 
					            encountered_footnote: false,
 | 
				
			||||||
            footnote_number: None,
 | 
					            footnote_number: None,
 | 
				
			||||||
            footnote_backlink_written: false,
 | 
					            footnote_backlink_written: false,
 | 
				
			||||||
| 
						 | 
					@ -147,7 +149,12 @@ impl<'s, I: Iterator<Item = Event<'s>>, W: std::fmt::Write> Writer<'s, I, W> {
 | 
				
			||||||
                        Container::Table => self.out.write_str("<table")?,
 | 
					                        Container::Table => self.out.write_str("<table")?,
 | 
				
			||||||
                        Container::TableRow => self.out.write_str("<tr")?,
 | 
					                        Container::TableRow => self.out.write_str("<tr")?,
 | 
				
			||||||
                        Container::Div { .. } => self.out.write_str("<div")?,
 | 
					                        Container::Div { .. } => self.out.write_str("<div")?,
 | 
				
			||||||
                        Container::Paragraph => self.out.write_str("<p")?,
 | 
					                        Container::Paragraph => {
 | 
				
			||||||
 | 
					                            if matches!(self.list_tightness.last(), Some(true)) {
 | 
				
			||||||
 | 
					                                continue;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
 | 
					                            self.out.write_str("<p")?;
 | 
				
			||||||
 | 
					                        }
 | 
				
			||||||
                        Container::Heading { level } => write!(self.out, "<h{}", level)?,
 | 
					                        Container::Heading { level } => write!(self.out, "<h{}", level)?,
 | 
				
			||||||
                        Container::TableCell => self.out.write_str("<td")?,
 | 
					                        Container::TableCell => self.out.write_str("<td")?,
 | 
				
			||||||
                        Container::DescriptionTerm => self.out.write_str("<dt")?,
 | 
					                        Container::DescriptionTerm => self.out.write_str("<dt")?,
 | 
				
			||||||
| 
						 | 
					@ -273,6 +280,7 @@ impl<'s, I: Iterator<Item = Event<'s>>, W: std::fmt::Write> Writer<'s, I, W> {
 | 
				
			||||||
                            kind: ListKind::Unordered | ListKind::Task,
 | 
					                            kind: ListKind::Unordered | ListKind::Task,
 | 
				
			||||||
                            ..
 | 
					                            ..
 | 
				
			||||||
                        } => {
 | 
					                        } => {
 | 
				
			||||||
 | 
					                            self.list_tightness.pop();
 | 
				
			||||||
                            self.out.write_str("</ul>")?;
 | 
					                            self.out.write_str("</ul>")?;
 | 
				
			||||||
                        }
 | 
					                        }
 | 
				
			||||||
                        Container::List {
 | 
					                        Container::List {
 | 
				
			||||||
| 
						 | 
					@ -298,6 +306,9 @@ impl<'s, I: Iterator<Item = Event<'s>>, W: std::fmt::Write> Writer<'s, I, W> {
 | 
				
			||||||
                        Container::TableRow => self.out.write_str("</tr>")?,
 | 
					                        Container::TableRow => self.out.write_str("</tr>")?,
 | 
				
			||||||
                        Container::Div { .. } => self.out.write_str("</div>")?,
 | 
					                        Container::Div { .. } => self.out.write_str("</div>")?,
 | 
				
			||||||
                        Container::Paragraph => {
 | 
					                        Container::Paragraph => {
 | 
				
			||||||
 | 
					                            if matches!(self.list_tightness.last(), Some(true)) {
 | 
				
			||||||
 | 
					                                continue;
 | 
				
			||||||
 | 
					                            }
 | 
				
			||||||
                            if let Some(num) = self.footnote_number {
 | 
					                            if let Some(num) = self.footnote_number {
 | 
				
			||||||
                                if matches!(
 | 
					                                if matches!(
 | 
				
			||||||
                                    self.events.peek(),
 | 
					                                    self.events.peek(),
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue