use super::prelude::*;
pub const RULE_COLOR: Rule = Rule {
name: "color",
try_consume_fn,
};
fn try_consume_fn<'p, 'r, 't>(
log: &slog::Logger,
parser: &'p mut Parser<'r, 't>,
) -> ParseResult<'r, 't, Elements<'t>> {
debug!(log, "Trying to create color container");
check_step(parser, Token::Color)?;
let color = collect_text(
log,
parser,
RULE_COLOR,
&[ParseCondition::current(Token::Pipe)],
&[
ParseCondition::current(Token::ParagraphBreak),
ParseCondition::current(Token::LineBreak),
],
None,
)?;
debug!(
log,
"Retrieved color descriptor, now building container";
"color" => color,
);
let (elements, exceptions) = collect_consume(
log,
parser,
RULE_COLOR,
&[ParseCondition::current(Token::Color)],
&[ParseCondition::current(Token::ParagraphBreak)],
None,
)?
.into();
let element = Element::Color {
color: cow!(color),
elements,
};
ok!(element, exceptions)
}