diff options
Diffstat (limited to 'src/filters.rs')
-rw-r--r-- | src/filters.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/filters.rs b/src/filters.rs new file mode 100644 index 0000000..1549c26 --- /dev/null +++ b/src/filters.rs @@ -0,0 +1,33 @@ +use evtclib::{AgentName, Log}; + +use super::{LogResult, Opt}; + +/// Do filtering based on the character or account name. +pub fn filter_name(log: &Log, opt: &Opt) -> bool { + for player in log.players() { + match player.name() { + AgentName::Player { + account_name, + character_name, + .. + } => { + if (opt.field.search_account() && opt.expression.is_match(account_name)) + || (opt.field.search_character() && opt.expression.is_match(character_name)) + { + return true; + } + } + _ => unreachable!(), + } + } + return false; +} + +/// Do filtering based on the fight outcome. +pub fn filter_outcome(result: &LogResult, opt: &Opt) -> bool { + match opt.outcome { + Some(o) if o == result.outcome => true, + None => true, + _ => false, + } +} |