use super::super::{Range, Result, Text};
use super::parser::Parser;
pub(crate) fn _try_parse_text<'doc>(parser: &Parser<'doc>) -> Result<Option<(Text, Parser<'doc>)>> {
let begin = parser.get_position();
if parser.is_eod() {
return Ok(None);
}
let mut p_current = parser.clone();
let mut content = String::new();
loop {
match p_current.advance_immutable() {
None => break, Some(('\n', p_next)) => {
content.push('\n');
p_current = p_next;
break; }
Some((c, p_next)) => {
content.push(c);
p_current = p_next;
}
}
}
if content.is_empty() {
return Ok(None);
}
let end = p_current.get_position();
let text = Text {
content,
range: Range { begin, end },
};
Ok(Some((text, p_current)))
}