pub struct SequencePattern { /* private fields */ }
Expand description
A pattern that checks that a sequence of other patterns match.
There are specific extension methods available, but you can also use Self::then
to add
arbitrary patterns.
§Example
Let’s say we wanted to locate places in a Document
where an article is followed by a noun.
We can do that with a SequencePattern
.
use harper_core::patterns::{SequencePattern, DocPattern};
use harper_core::{Document, Span};
let document = Document::new_markdown_default_curated("This is a test.");
let pattern = SequencePattern::default().then_determiner().then_whitespace().then_nominal();
let matches = pattern.find_all_matches_in_doc(&document);
// The pattern found that the tokens at indexes 4, 5, and 6 fit the criteria.
assert_eq!(matches, vec![Span::new(4, 7)]);
Implementations§
Source§impl SequencePattern
impl SequencePattern
pub fn then_nominal(self) -> Self
pub fn then_one_or_more_nominals(self) -> Self
pub fn then_anything_but_nominal(self) -> Self
pub fn then_noun(self) -> Self
pub fn then_one_or_more_nouns(self) -> Self
pub fn then_anything_but_noun(self) -> Self
pub fn then_possessive_nominal(self) -> Self
pub fn then_one_or_more_possessive_nominals(self) -> Self
pub fn then_anything_but_possessive_nominal(self) -> Self
pub fn then_plural_nominal(self) -> Self
pub fn then_one_or_more_plural_nominals(self) -> Self
pub fn then_anything_but_plural_nominal(self) -> Self
pub fn then_verb(self) -> Self
pub fn then_one_or_more_verbs(self) -> Self
pub fn then_anything_but_verb(self) -> Self
pub fn then_auxiliary_verb(self) -> Self
pub fn then_one_or_more_auxiliary_verbs(self) -> Self
pub fn then_anything_but_auxiliary_verb(self) -> Self
pub fn then_linking_verb(self) -> Self
pub fn then_one_or_more_linking_verbs(self) -> Self
pub fn then_anything_but_linking_verb(self) -> Self
pub fn then_pronoun(self) -> Self
pub fn then_one_or_more_pronouns(self) -> Self
pub fn then_anything_but_pronoun(self) -> Self
pub fn then_punctuation(self) -> Self
pub fn then_one_or_more_punctuations(self) -> Self
pub fn then_anything_but_punctuation(self) -> Self
pub fn then_conjunction(self) -> Self
pub fn then_one_or_more_conjunctions(self) -> Self
pub fn then_anything_but_conjunction(self) -> Self
pub fn then_comma(self) -> Self
pub fn then_one_or_more_commas(self) -> Self
pub fn then_anything_but_comma(self) -> Self
pub fn then_period(self) -> Self
pub fn then_one_or_more_periods(self) -> Self
pub fn then_anything_but_period(self) -> Self
pub fn then_number(self) -> Self
pub fn then_one_or_more_numbers(self) -> Self
pub fn then_anything_but_number(self) -> Self
pub fn then_case_separator(self) -> Self
pub fn then_one_or_more_case_separators(self) -> Self
pub fn then_anything_but_case_separator(self) -> Self
pub fn then_adverb(self) -> Self
pub fn then_one_or_more_adverbs(self) -> Self
pub fn then_anything_but_adverb(self) -> Self
pub fn then_adjective(self) -> Self
pub fn then_one_or_more_adjectives(self) -> Self
pub fn then_anything_but_adjective(self) -> Self
pub fn then_apostrophe(self) -> Self
pub fn then_one_or_more_apostrophes(self) -> Self
pub fn then_anything_but_apostrophe(self) -> Self
pub fn then_hyphen(self) -> Self
pub fn then_one_or_more_hyphens(self) -> Self
pub fn then_anything_but_hyphen(self) -> Self
pub fn then_determiner(self) -> Self
pub fn then_one_or_more_determiners(self) -> Self
pub fn then_anything_but_determiner(self) -> Self
pub fn then_proper_noun(self) -> Self
pub fn then_one_or_more_proper_nouns(self) -> Self
pub fn then_anything_but_proper_noun(self) -> Self
pub fn then_preposition(self) -> Self
pub fn then_one_or_more_prepositions(self) -> Self
pub fn then_anything_but_preposition(self) -> Self
pub fn then_not_plural_nominal(self) -> Self
pub fn then_one_or_more_not_plural_nominals(self) -> Self
pub fn then_anything_but_not_plural_nominal(self) -> Self
pub fn then_indefinite_article(self) -> Self
pub fn then_exact_word(self, word: &'static str) -> Self
Sourcepub fn aco(word: &'static str) -> Self
pub fn aco(word: &'static str) -> Self
Shorthand for Self::any_capitalization_of
.
pub fn any_capitalization_of(word: &'static str) -> Self
Sourcepub fn t_aco(self, word: &'static str) -> Self
pub fn t_aco(self, word: &'static str) -> Self
Shorthand for Self::then_any_capitalization_of
.
Sourcepub fn then_any_capitalization_of(self, word: &'static str) -> Self
pub fn then_any_capitalization_of(self, word: &'static str) -> Self
Match examples of word
that have any capitalization.
Sourcepub fn then_any_word(self) -> Self
pub fn then_any_word(self) -> Self
Matches any word.
Sourcepub fn then_strict(self, kind: TokenKind) -> Self
pub fn then_strict(self, kind: TokenKind) -> Self
Matches any token whose Kind
exactly matches.
Sourcepub fn t_ws(self) -> Self
pub fn t_ws(self) -> Self
Shorthand for Self::then_whitespace
.
Sourcepub fn then_whitespace(self) -> Self
pub fn then_whitespace(self) -> Self
Match against one or more whitespace tokens.
pub fn then_one_or_more(self, pat: impl Pattern + 'static) -> Self
Sourcepub fn then_anything(self) -> Self
pub fn then_anything(self) -> Self
Match against any single token. More of a filler than anything else.
pub fn then(self, pat: impl Pattern + 'static) -> Self
Trait Implementations§
Source§impl Default for SequencePattern
impl Default for SequencePattern
Source§fn default() -> SequencePattern
fn default() -> SequencePattern
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for SequencePattern
impl !RefUnwindSafe for SequencePattern
impl !Send for SequencePattern
impl !Sync for SequencePattern
impl Unpin for SequencePattern
impl !UnwindSafe for SequencePattern
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<P> DocPattern for Pwhere
P: PatternExt,
impl<P> DocPattern for Pwhere
P: PatternExt,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more