pub fn any_of<V>(tokens: V) -> Token
Expand description
Matches one or more of a set of tokens, in any order but without repetition.
ยงExamples
use initiative_core::command::prelude::*;
let token = any_of([keyword("badger"), keyword("mushroom"), keyword("snake")]);
assert_eq!(
vec![
// "Ungreedy" version consuming only one token,
FuzzyMatch::Overflow(
TokenMatch::new(&token, vec![
TokenMatch::from(&keyword("mushroom")),
]),
" snake badger badger".into(),
),
// two tokens,
FuzzyMatch::Overflow(
TokenMatch::new(&token, vec![
TokenMatch::from(&keyword("mushroom")),
TokenMatch::from(&keyword("snake")),
]),
" badger badger".into(),
),
// and all three tokens. The final word is repeated and so does not match.
FuzzyMatch::Overflow(
TokenMatch::new(&token, vec![
TokenMatch::from(&keyword("mushroom")),
TokenMatch::from(&keyword("snake")),
TokenMatch::from(&keyword("badger")),
]),
" badger".into(),
),
],
token
.match_input("mushroom snake badger badger", &app_meta)
.collect::<Vec<_>>()
.await,
);