From 2467cb3db3b81f8731602c4ee5474eee829ce685 Mon Sep 17 00:00:00 2001 From: PoiScript Date: Fri, 12 Apr 2019 15:36:49 +0800 Subject: [PATCH] fix(parser): list parsing --- src/parser.rs | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/src/parser.rs b/src/parser.rs index ce0472e..48ba347 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -580,13 +580,10 @@ impl<'a> Iterator for Parser<'a> { fn next(&mut self) -> Option> { if let Some(&(container, limit, end)) = self.stack.last() { - // eprintln!( - // "{:width$} {:?} {:?}", - // ' ', - // container, - // &self.text[self.off..limit], - // width = self.stack_depth(), - // ); + let tail = &self.text[self.off..limit]; + + // eprint!("{:1$}", ' ', self.stack_depth()); + // eprintln!("{:?} {:?} {:?}", container, tail, self.next_item); debug_assert!( self.off <= limit && limit <= end && end <= self.text.len(), @@ -597,8 +594,6 @@ impl<'a> Iterator for Parser<'a> { self.text.len() ); - let tail = &self.text[self.off..limit]; - Some(match container { Container::Headline(beg) => { if self.off >= limit { @@ -643,8 +638,9 @@ impl<'a> Iterator for Parser<'a> { } Container::List(ident, ordered) => { if let Some(bullet) = self.next_item.pop().unwrap() { - self.off += bullet.len() + ident; - let (limit, end, next) = list::parse(tail, ident); + let off = bullet.len() + ident; + self.off += off; + let (limit, end, next) = list::parse(&tail[off..], ident); self.push_stack(Container::ListItem, limit, end); self.next_item.push(next); Event::ListItemBeg { bullet }