aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniel Schadt <kingdread@gmx.de>2021-11-17 21:24:35 +0100
committerDaniel Schadt <kingdread@gmx.de>2021-11-17 21:24:35 +0100
commitdcc7cb9ccb7a8d133c96e939fce500eb97c866e6 (patch)
tree3eef3c652aa6beaacfbf8a58e4ad9359adeb2e73 /src
parent5d18c3e79638573fb7ccf03349b7a5ca0c9d97f9 (diff)
downloadraidgrep-dcc7cb9ccb7a8d133c96e939fce500eb97c866e6.tar.gz
raidgrep-dcc7cb9ccb7a8d133c96e939fce500eb97c866e6.tar.bz2
raidgrep-dcc7cb9ccb7a8d133c96e939fce500eb97c866e6.zip
Implement -gamemode
-gamemode is a more general version of -raid/-fractal/...
Diffstat (limited to 'src')
-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.