From 371186e872df3518bb5a2894f487ec02a42c771a Mon Sep 17 00:00:00 2001 From: Daniel Date: Tue, 12 May 2020 13:51:09 +0200 Subject: add a -cm filter --- src/fexpr/grammar.lalrpop | 1 + src/filters/log.rs | 14 ++++++++++++++ src/main.rs | 1 + 3 files changed, 16 insertions(+) (limited to 'src') diff --git a/src/fexpr/grammar.lalrpop b/src/fexpr/grammar.lalrpop index f91da19..1540aae 100644 --- a/src/fexpr/grammar.lalrpop +++ b/src/fexpr/grammar.lalrpop @@ -55,6 +55,7 @@ LogPredicate: Box = { "-log-after" => filters::log::log_after(<>), "-boss" > => filters::log::boss(<>), + "-cm" => filters::log::challenge_mote(), "-include" => filters::constant(true), "-exclude" => filters::constant(false), diff --git a/src/filters/log.rs b/src/filters/log.rs index b9843e9..79513d5 100644 --- a/src/filters/log.rs +++ b/src/filters/log.rs @@ -186,6 +186,20 @@ pub fn log_before(when: DateTime) -> Box { log_time(None, Some(when)) } +#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +struct CmFilter; + +impl Filter for CmFilter { + fn filter(&self, log: &LogResult) -> bool { + log.is_cm + } +} + +/// A filter that only includes logs that had the Challenge Mote turned on. +pub fn challenge_mote() -> Box { + Box::new(CmFilter) +} + #[cfg(test)] mod tests { use super::*; diff --git a/src/main.rs b/src/main.rs index 74fcf7f..e8ed255 100644 --- a/src/main.rs +++ b/src/main.rs @@ -52,6 +52,7 @@ const APP_NAME: &str = "raidgrep"; /// -before DATE Only include logs from before the given date. /// -after DATE Only include logs from after the given date. /// -boss BOSSES Only include logs from the given bosses. +/// -cm Only include logs with challenge mote enabled. /// -player REGEX Shorthand to check if any player in the log has the given name. /// -include Always evaluates to including the log. /// -exclude Always evaluates to excluding the log. -- cgit v1.2.3