diff options
| -rw-r--r-- | Cargo.lock | 2 | ||||
| -rw-r--r-- | Cargo.toml | 2 | ||||
| -rw-r--r-- | src/main.rs | 23 | 
3 files changed, 27 insertions, 0 deletions
@@ -4,6 +4,8 @@ version = "0.1.0"  dependencies = [   "hyper 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",   "irc 0.9.2 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)",   "serde 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)",   "serde_json 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)",   "serde_macros 0.6.11 (registry+https://github.com/rust-lang/crates.io-index)", @@ -6,6 +6,8 @@ authors = ["David Li <li.davidm96@gmail.com>"]  [dependencies]  hyper = "0.7.2"  irc = "0.9.2" +lazy_static = "0.1.*" +rand = "0.3"  serde = "*"  serde_json = "*"  serde_macros = "*" diff --git a/src/main.rs b/src/main.rs index 03f9e02..4abd4b6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,6 +2,9 @@  #![plugin(serde_macros)]  extern crate hyper;  extern crate irc; +#[macro_use] +extern crate lazy_static; +extern crate rand;  extern crate serde;  extern crate serde_json; @@ -15,6 +18,22 @@ use hyper::header::Connection;  use irc::client::prelude::*; +use rand::{thread_rng, sample}; + +lazy_static! { +    static ref EMOTE_HAPPY: Vec<&'static str> = vec![":D", ":)", "^_^"]; + +    static ref EMOTES: HashMap<&'static str, &'static [&'static str]> = { +        let mut m = HashMap::new(); +        m.insert("happy", &(*EMOTE_HAPPY)[..]); +        m.insert("smile", &(*EMOTE_HAPPY)[..]); +        m.insert(":)", &(*EMOTE_HAPPY)[..]); +        m.insert(":D", &(*EMOTE_HAPPY)[..]); + +        m +    }; +} +  #[derive(Debug, PartialEq, Serialize, Deserialize)]  struct WikiPage {      ns: u32, @@ -66,6 +85,10 @@ fn emote_action(action: &str) -> Option<&str> {      if action == "shrugs" {          Some("¯\\_(ツ)_/¯")      } +    else if let Some(x) = EMOTES.get(action) { +        let mut rng = thread_rng(); +        Some(sample(&mut rng, *x, 1)[0]) +    }      else {          None      }  | 
