From 5d18c3e79638573fb7ccf03349b7a5ca0c9d97f9 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Wed, 17 Nov 2021 20:32:21 +0100 Subject: Add a game-mode filter --- src/fexpr/grammar.lalrpop | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src/fexpr') diff --git a/src/fexpr/grammar.lalrpop b/src/fexpr/grammar.lalrpop index ce78396..580fa1b 100644 --- a/src/fexpr/grammar.lalrpop +++ b/src/fexpr/grammar.lalrpop @@ -9,7 +9,7 @@ use super::{ DurationProducer, CountProducer, }; -use evtclib::Encounter; +use evtclib::{Encounter, GameMode}; use std::collections::HashSet; use lalrpop_util::ParseError; @@ -64,6 +64,11 @@ LogPredicate: Box = { "-boss" > => filters::log::encounter(<>), "-cm" => filters::log::challenge_mote(), + "-raid" => filters::log::game_mode([GameMode::Raid].into()), + "-fractal" => filters::log::game_mode([GameMode::Fractal].into()), + "-strike" => filters::log::game_mode([GameMode::Strike].into()), + "-wvw" => filters::log::game_mode([GameMode::WvW].into()), + "-include" => filters::constant(true), "-exclude" => filters::constant(false), -- cgit v1.2.3 From dcc7cb9ccb7a8d133c96e939fce500eb97c866e6 Mon Sep 17 00:00:00 2001 From: Daniel Schadt Date: Wed, 17 Nov 2021 21:24:35 +0100 Subject: Implement -gamemode -gamemode is a more general version of -raid/-fractal/... --- src/fexpr/grammar.lalrpop | 10 ++++++++++ src/fexpr/mod.rs | 2 ++ 2 files changed, 12 insertions(+) (limited to 'src/fexpr') 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 = { "-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" > => filters::log::game_mode(<>), "-include" => filters::constant(true), "-exclude" => filters::constant(false), @@ -155,6 +156,15 @@ Encounter: Encounter = { }), } +GameMode: GameMode = { + =>? w.parse().map_err(|_| ParseError::User { + error: FError { + location: l, + kind: FErrorKind::GameMode, + } + }), +} + PlayerClass: PlayerClass = { =>? 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. -- cgit v1.2.3