aboutsummaryrefslogtreecommitdiff
path: root/src/filters.rs
diff options
context:
space:
mode:
authorDaniel <kingdread@gmx.de>2018-09-10 00:40:29 +0200
committerDaniel <kingdread@gmx.de>2018-09-10 00:40:29 +0200
commit2c1203f6f2c3e6bbaf527fa202425ed465e89d69 (patch)
treef0cd60ed0e58044738b054fc8120972f213a4e43 /src/filters.rs
parentab639eea67e830ab27f51adb2665c73d93c682c7 (diff)
downloadraidgrep-2c1203f6f2c3e6bbaf527fa202425ed465e89d69.tar.gz
raidgrep-2c1203f6f2c3e6bbaf527fa202425ed465e89d69.tar.bz2
raidgrep-2c1203f6f2c3e6bbaf527fa202425ed465e89d69.zip
move filtering into own submodule
Diffstat (limited to 'src/filters.rs')
-rw-r--r--src/filters.rs33
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,
+ }
+}