From 17af9b65cc75ddc15091d1f3a4365c13336cceb7 Mon Sep 17 00:00:00 2001 From: Till Höppner Date: Sat, 23 Jan 2016 23:32:54 +0100 Subject: Add seen command --- src/event.rs | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/event.rs') diff --git a/src/event.rs b/src/event.rs index 83bb876..f497359 100644 --- a/src/event.rs +++ b/src/event.rs @@ -150,6 +150,26 @@ pub enum Type<'a> { } } +impl<'a> Type<'a> { + pub fn involves(&self, needle: &str) -> bool { + use self::Type::*; + match self { + &Msg { ref from, .. } => from == needle, + &Action { ref from, .. } => from == needle, + &Join { ref nick, .. } => nick == needle, + &Part { ref nick, .. } => nick == needle, + &Quit { ref nick, .. } => nick == needle, + &Nick { ref old_nick, ref new_nick, .. } => old_nick == needle || new_nick == needle, + &Notice { ref from, .. } => from == needle, + &Kick { ref kicked_nick, ref kicking_nick, .. } => *kicked_nick == Cow::Borrowed(needle) + || kicking_nick.as_ref().map_or(false, |k| k.as_ref() == Cow::Borrowed(needle)), + &TopicChange { ref nick, .. } => nick.as_ref().map_or(false, |k| k.as_ref() == needle), + &Mode { ref nick, .. } => nick.as_ref().map_or(false, |k| k.as_ref() == Cow::Borrowed(needle)), + _ => false + } + } +} + #[derive(Clone, Debug, PartialEq, Eq, RustcEncodable, RustcDecodable)] pub struct NoTimeHash<'a>(pub Event<'a>); -- cgit v1.2.3