aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/fexpr/grammar.lalrpop10
-rw-r--r--src/fexpr/mod.rs2
2 files changed, 12 insertions, 0 deletions
diff --git a/src/fexpr/grammar.lalrpop b/src/fexpr/grammar.lalrpop
index 580fa1b..bca7691 100644
--- a/src/fexpr/grammar.lalrpop
+++ b/src/fexpr/grammar.lalrpop
@@ -68,6 +68,7 @@ LogPredicate: Box<dyn filters::log::LogFilter> = {
"-fractal" => filters::log::game_mode([GameMode::Fractal].into()),
"-strike" => filters::log::game_mode([GameMode::Strike].into()),
"-wvw" => filters::log::game_mode([GameMode::WvW].into()),
+ "-gamemode" <Comma<GameMode>> => filters::log::game_mode(<>),
"-include" => filters::constant(true),
"-exclude" => filters::constant(false),
@@ -155,6 +156,15 @@ Encounter: Encounter = {
}),
}
+GameMode: GameMode = {
+ <l:@L> <w:word> =>? w.parse().map_err(|_| ParseError::User {
+ error: FError {
+ location: l,
+ kind: FErrorKind::GameMode,
+ }
+ }),
+}
+
PlayerClass: PlayerClass = {
<l:@L> <w:word> =>? w.parse().map_err(|_| ParseError::User {
error: FError {
diff --git a/src/fexpr/mod.rs b/src/fexpr/mod.rs
index 0fe2acf..6eeb753 100644
--- a/src/fexpr/mod.rs
+++ b/src/fexpr/mod.rs
@@ -51,6 +51,8 @@ pub enum FErrorKind {
Boss,
#[error("invalid class name")]
Class,
+ #[error("invalid game mode")]
+ GameMode,
}
/// Shortcut to create a new parser and parse the given input.