use super::prelude::*;
pub const RULE_STRIKETHROUGH_DASH: Rule = Rule {
name: "strikethrough-dash",
position: LineRequirement::Any,
try_consume_fn: dash,
};
pub const RULE_STRIKETHROUGH_TILDE: Rule = Rule {
name: "strikethrough-tilde",
position: LineRequirement::Any,
try_consume_fn: tilde,
};
fn dash<'r, 't>(parser: &mut Parser<'r, 't>) -> ParseResult<'r, 't, Elements<'t>> {
trace!("Trying to create a double dash strikethrough");
try_consume_strikethrough(parser, RULE_STRIKETHROUGH_DASH, Token::DoubleDash)
}
fn tilde<'r, 't>(parser: &mut Parser<'r, 't>) -> ParseResult<'r, 't, Elements<'t>> {
trace!("Trying to create a double tilde strikethrough");
try_consume_strikethrough(parser, RULE_STRIKETHROUGH_TILDE, Token::DoubleTilde)
}
fn try_consume_strikethrough<'r, 't>(
parser: &mut Parser<'r, 't>,
rule: Rule,
token: Token,
) -> ParseResult<'r, 't, Elements<'t>> {
debug!("Trying to create a strikethrough (token {})", token.name());
assert_step(parser, token)?;
collect_container(
parser,
rule,
ContainerType::Strikethrough,
&[ParseCondition::current(token)],
&[
ParseCondition::current(Token::ParagraphBreak),
ParseCondition::token_pair(token, Token::Whitespace),
ParseCondition::token_pair(Token::Whitespace, token),
],
None,
)
}