harper_core/expr/
space_or_hyphen.rs

1use crate::expr::FirstMatchOf;
2use crate::patterns::WhitespacePattern;
3use crate::{Span, Token};
4
5use super::Expr;
6
7/// Matches either a space or a hyphen, useful for matching compound words.
8#[derive(Default)]
9pub struct SpaceOrHyphen;
10
11impl Expr for SpaceOrHyphen {
12    fn run(&self, cursor: usize, tokens: &[Token], source: &[char]) -> Option<Span<Token>> {
13        FirstMatchOf::new(vec![
14            Box::new(WhitespacePattern),
15            Box::new(|tok: &Token, _source: &[char]| tok.kind.is_hyphen()),
16        ])
17        .run(cursor, tokens, source)
18    }
19}