From 9c63c4b89ea0fd889f7f0fd1da71684511e6620e Mon Sep 17 00:00:00 2001 From: Till Hoeppner Date: Tue, 9 Jun 2015 00:18:31 +0200 Subject: Add basic frequency counter binary --- src/format/binary.rs | 13 +++++++------ src/format/mod.rs | 2 +- src/format/weechat3.rs | 11 ++++++++++- 3 files changed, 18 insertions(+), 8 deletions(-) (limited to 'src/format') diff --git a/src/format/binary.rs b/src/format/binary.rs index aae760c..f7efd7d 100644 --- a/src/format/binary.rs +++ b/src/format/binary.rs @@ -1,6 +1,5 @@ -use std::io::{ self, BufRead, Write }; -use std::borrow::ToOwned; -use std::iter::{ Iterator }; +use std::io::{ BufRead, Write }; +use std::iter::Iterator; use log::Event; use format::{ Encode, Decode }; @@ -10,19 +9,21 @@ use bincode::{ self, SizeLimit }; pub struct Binary; pub struct Iter where R: BufRead { - input: R, + input: R } impl Iterator for Iter where R: BufRead { type Item = ::Result; fn next(&mut self) -> Option<::Result> { - Some(bincode::decode_from(&mut self.input, SizeLimit::Infinite).map_err(|_| ::IlcError::BincodeDecode)) + Some(bincode::decode_from::(&mut self.input, SizeLimit::Infinite) + .map_err(|_| ::IlcError::BincodeDecode)) } } impl Encode for Binary where W: Write { fn encode(&self, mut output: W, event: &Event) -> ::Result<()> { - bincode::encode_into(event, &mut output, SizeLimit::Infinite).map_err(|_| ::IlcError::BincodeEncode) + bincode::encode_into(event, &mut output, SizeLimit::Infinite) + .map_err(|_| ::IlcError::BincodeEncode) } } diff --git a/src/format/mod.rs b/src/format/mod.rs index 2c271bd..0716dba 100644 --- a/src/format/mod.rs +++ b/src/format/mod.rs @@ -2,7 +2,7 @@ //! As the source format may not provide the same information as the //! target format, all formats must allow for omittable information. -use std::io::{ self, BufRead, Write }; +use std::io::{ BufRead, Write }; use log::Event; diff --git a/src/format/weechat3.rs b/src/format/weechat3.rs index 59bb072..f319ace 100644 --- a/src/format/weechat3.rs +++ b/src/format/weechat3.rs @@ -1,4 +1,4 @@ -use std::io::{ self, BufRead, Write }; +use std::io::{ BufRead, Write }; use std::borrow::ToOwned; use std::iter::{ Iterator }; @@ -58,6 +58,10 @@ impl Iterator for Iter where R: BufRead { nick: nick.to_owned(), channel: channel.to_owned(), mask: mask(host), reason: mask(&join(reason, &split_tokens[8..])), time: timestamp(date, time) })), + [date, time, "<--", nick, host, "has", "quit", reason..] => return Some(Ok(Event::Quit { + nick: nick.to_owned(), mask: mask(host), + reason: mask(&join(reason, &split_tokens[7..])), time: timestamp(date, time) + })), [date, time, "--", notice, content..] if notice.starts_with("Notice(") => return Some(Ok(Event::Notice { @@ -68,6 +72,11 @@ impl Iterator for Iter where R: BufRead { [date, time, "--", "irc:", "disconnected", "from", "server", _..] => return Some(Ok(Event::Disconnect { time: timestamp(date, time) })), + [date, time, "--", nick, verb, "now", "known", "as", new_nick] + if verb == "is" || verb == "are" + => return Some(Ok(Event::Nick { + old: nick.to_owned(), new: new_nick.to_owned(), time: timestamp(date, time) + })), [date, time, sp, "*", nick, msg..] if sp.is_empty() => return Some(Ok(Event::Action { -- cgit v1.2.3