aboutsummaryrefslogtreecommitdiff
path: root/src/filters.rs
diff options
context:
space:
mode:
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,
+ }
+}