Fix a panic when parsing node summaries

This commit is contained in:
Juno Takano 2026-01-11 17:32:00 -03:00
commit 3c0de5ca32
2 changed files with 17 additions and 13 deletions

View file

@ -1,6 +1,8 @@
use crate::syntax::content::parser::{
state::State,
token::{Token, paragraph::Paragraph, preformat::PreFormat},
token::{
Token, header::Header, paragraph::Paragraph, preformat::PreFormat,
},
};
pub mod block;
@ -31,7 +33,7 @@ pub enum Inline {
}
/// # Panics
/// Panics if there is an open header at end of input.
/// Panics if there is an open header or list at end of input.
pub fn close(state: &State, tokens: &mut Vec<Token>) {
match state.context.block {
Block::PreFormat => {
@ -43,7 +45,9 @@ pub fn close(state: &State, tokens: &mut Vec<Token>) {
Block::List => {
panic!("End of input with open list")
},
Block::Header(_) => panic!("End of input with open header"),
Block::Header(level) => {
tokens.push(Token::Header(Header::from_u8(level, false, None)));
},
Block::None => (),
}
}

View file

@ -90,16 +90,15 @@ pub fn parse(
mod tests {
use crate::{
types::Graph,
syntax::content::{
parser,
parser::{
token::{preformat::PreFormat},
state::State,
token::header::Level,
Block, context, Token,
syntax::content::parser::{
self, Block, Token, context,
state::State,
token::{
header::{Header, Level},
preformat::PreFormat,
},
},
types::Graph,
};
fn read(input: &str) -> String {
@ -125,12 +124,13 @@ mod tests {
}
#[test]
#[should_panic(expected = "End of input with open header")]
fn end_with_open_header() {
let mut state = State::default();
state.context.block = Block::Header(1);
context::close(&state, &mut vec![]);
let mut vec: Vec<Token> = vec![];
context::close(&state, &mut vec);
assert_eq!(vec, vec![Token::Header(Header::from_u8(1, false, None))]);
}
#[test]