fix(parser): next_obj & real_next_obj
This commit is contained in:
parent
0083425872
commit
eaf40dcc87
|
@ -4,8 +4,7 @@ use crate::{elements::*, headline::*, objects::*};
|
||||||
use jetscii::bytes;
|
use jetscii::bytes;
|
||||||
use memchr::memchr_iter;
|
use memchr::memchr_iter;
|
||||||
|
|
||||||
#[cfg_attr(test, derive(PartialEq))]
|
#[derive(Copy, Clone)]
|
||||||
#[derive(Copy, Clone, Debug)]
|
|
||||||
enum Container {
|
enum Container {
|
||||||
Headline(usize),
|
Headline(usize),
|
||||||
Section(usize),
|
Section(usize),
|
||||||
|
@ -23,7 +22,6 @@ enum Container {
|
||||||
Underline,
|
Underline,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg_attr(test, derive(PartialEq))]
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub enum Event<'a> {
|
pub enum Event<'a> {
|
||||||
HeadlineBeg(Headline<'a>),
|
HeadlineBeg(Headline<'a>),
|
||||||
|
@ -435,12 +433,12 @@ impl<'a> Parser<'a> {
|
||||||
let mut pos = 0;
|
let mut pos = 0;
|
||||||
|
|
||||||
while let Some(off) = bs.find(&bytes[pos..]) {
|
while let Some(off) = bs.find(&bytes[pos..]) {
|
||||||
pos += off + 1;
|
pos += off;
|
||||||
|
|
||||||
if let Some(buf) = self.real_next_obj(&text[pos..]) {
|
if let Some(buf) = self.real_next_obj(&text[pos..]) {
|
||||||
self.obj_buf = Some(buf);
|
self.obj_buf = Some(buf);
|
||||||
return (Event::Text(&text[0..pos]), pos, 0, 0);
|
return (Event::Text(&text[0..pos]), pos, 0, 0);
|
||||||
}
|
}
|
||||||
|
pos += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
(Event::Text(text), text.len(), 0, 0)
|
(Event::Text(text), text.len(), 0, 0)
|
||||||
|
@ -509,7 +507,9 @@ impl<'a> Parser<'a> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
b'{' | b' ' | b'"' | b',' | b'(' | b'\n' => self.next_inline(&text[1..]),
|
b'{' | b' ' | b'"' | b',' | b'(' | b'\n' => self
|
||||||
|
.next_inline(&text[1..])
|
||||||
|
.map(|(event, off, limit, end)| (event, off + 1, limit + 1, end + 1)),
|
||||||
_ => self.next_inline(text),
|
_ => self.next_inline(text),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue