fixup! block: add hierarchical heading sections
This commit is contained in:
		
					parent
					
						
							
								530820a04e
							
						
					
				
			
			
				commit
				
					
						25864fa467
					
				
			
		
					 1 changed files with 55 additions and 2 deletions
				
			
		
							
								
								
									
										57
									
								
								src/block.rs
									
										
									
									
									
								
							
							
						
						
									
										57
									
								
								src/block.rs
									
										
									
									
									
								
							| 
						 | 
					@ -287,8 +287,7 @@ impl<'s> TreeParser<'s> {
 | 
				
			||||||
            let first_close = self
 | 
					            let first_close = self
 | 
				
			||||||
                .open_sections
 | 
					                .open_sections
 | 
				
			||||||
                .iter()
 | 
					                .iter()
 | 
				
			||||||
                .rev()
 | 
					                .rposition(|l| *l < level)
 | 
				
			||||||
                .rposition(|l| *l > level)
 | 
					 | 
				
			||||||
                .map_or(0, |i| i + 1);
 | 
					                .map_or(0, |i| i + 1);
 | 
				
			||||||
            self.open_sections.drain(first_close..).for_each(|_| {
 | 
					            self.open_sections.drain(first_close..).for_each(|_| {
 | 
				
			||||||
                self.tree.exit(); // section
 | 
					                self.tree.exit(); // section
 | 
				
			||||||
| 
						 | 
					@ -920,6 +919,60 @@ mod test {
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    #[test]
 | 
				
			||||||
 | 
					    fn parse_section() {
 | 
				
			||||||
 | 
					        test_parse!(
 | 
				
			||||||
 | 
					            concat!(
 | 
				
			||||||
 | 
					                "# a\n",
 | 
				
			||||||
 | 
					                "\n",
 | 
				
			||||||
 | 
					                "## aa\n",
 | 
				
			||||||
 | 
					                "\n",
 | 
				
			||||||
 | 
					                "#### aaaa\n",
 | 
				
			||||||
 | 
					                "\n",
 | 
				
			||||||
 | 
					                "## ab\n",
 | 
				
			||||||
 | 
					                "\n",
 | 
				
			||||||
 | 
					                "### aba\n",
 | 
				
			||||||
 | 
					                "\n",
 | 
				
			||||||
 | 
					                "# b\n",
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            (Enter(Container(Section)), "#"),
 | 
				
			||||||
 | 
					            (Enter(Leaf(Heading)), "#"),
 | 
				
			||||||
 | 
					            (Inline, "a"),
 | 
				
			||||||
 | 
					            (Exit(Leaf(Heading)), "#"),
 | 
				
			||||||
 | 
					            (Atom(Blankline), "\n"),
 | 
				
			||||||
 | 
					            (Enter(Container(Section)), "##"),
 | 
				
			||||||
 | 
					            (Enter(Leaf(Heading)), "##"),
 | 
				
			||||||
 | 
					            (Inline, "aa"),
 | 
				
			||||||
 | 
					            (Exit(Leaf(Heading)), "##"),
 | 
				
			||||||
 | 
					            (Atom(Blankline), "\n"),
 | 
				
			||||||
 | 
					            (Enter(Container(Section)), "####"),
 | 
				
			||||||
 | 
					            (Enter(Leaf(Heading)), "####"),
 | 
				
			||||||
 | 
					            (Inline, "aaaa"),
 | 
				
			||||||
 | 
					            (Exit(Leaf(Heading)), "####"),
 | 
				
			||||||
 | 
					            (Atom(Blankline), "\n"),
 | 
				
			||||||
 | 
					            (Exit(Container(Section)), "####"),
 | 
				
			||||||
 | 
					            (Exit(Container(Section)), "##"),
 | 
				
			||||||
 | 
					            (Enter(Container(Section)), "##"),
 | 
				
			||||||
 | 
					            (Enter(Leaf(Heading)), "##"),
 | 
				
			||||||
 | 
					            (Inline, "ab"),
 | 
				
			||||||
 | 
					            (Exit(Leaf(Heading)), "##"),
 | 
				
			||||||
 | 
					            (Atom(Blankline), "\n"),
 | 
				
			||||||
 | 
					            (Enter(Container(Section)), "###"),
 | 
				
			||||||
 | 
					            (Enter(Leaf(Heading)), "###"),
 | 
				
			||||||
 | 
					            (Inline, "aba"),
 | 
				
			||||||
 | 
					            (Exit(Leaf(Heading)), "###"),
 | 
				
			||||||
 | 
					            (Atom(Blankline), "\n"),
 | 
				
			||||||
 | 
					            (Exit(Container(Section)), "###"),
 | 
				
			||||||
 | 
					            (Exit(Container(Section)), "##"),
 | 
				
			||||||
 | 
					            (Exit(Container(Section)), "#"),
 | 
				
			||||||
 | 
					            (Enter(Container(Section)), "#"),
 | 
				
			||||||
 | 
					            (Enter(Leaf(Heading)), "#"),
 | 
				
			||||||
 | 
					            (Inline, "b"),
 | 
				
			||||||
 | 
					            (Exit(Leaf(Heading)), "#"),
 | 
				
			||||||
 | 
					            (Exit(Container(Section)), "#"),
 | 
				
			||||||
 | 
					        );
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    #[test]
 | 
					    #[test]
 | 
				
			||||||
    fn parse_blockquote() {
 | 
					    fn parse_blockquote() {
 | 
				
			||||||
        test_parse!(
 | 
					        test_parse!(
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue