diff options
| -rw-r--r-- | src/display/mod.rs | 27 | ||||
| -rw-r--r-- | src/tw/mod.rs | 20 | 
2 files changed, 35 insertions, 12 deletions
diff --git a/src/display/mod.rs b/src/display/mod.rs index 92fa9dd..0eeba68 100644 --- a/src/display/mod.rs +++ b/src/display/mod.rs @@ -363,12 +363,13 @@ pub fn render_twete(twete_id: &TweetId, tweeter: &mut tw::TwitterCache) -> Vec<S                      let rt = tweeter.retrieve_tweet(&TweetId::Twitter(rt_id.to_owned())).unwrap().clone();                      // and its author                      let rt_author = tweeter.retrieve_user(&rt.author_id).unwrap().clone(); -                    result.push(format!("{}  id:{} (rt_id:{}){}{}", +                    result.push(format!("{}  id {} (rt id {}){}{}",                          id_color, rt.internal_id, twete.internal_id,                          rt.reply_to_tweet.clone() -                            .map(|id| tweeter.retrieve_tweet(&TweetId::Twitter(id.to_owned())) -                                .and_then(|tw| Some(format!(" reply_to:{}", tw.internal_id))) -                                .unwrap_or(format!(" reply_to:twitter::{}", id)) +                            .map(|id_str| TweetId::Twitter(id_str.to_owned())) +                            .map(|id| tweeter.retrieve_tweet(&id) +                                .and_then(|tw| Some(format!(" reply to {}", tw.internal_id))) +                                .unwrap_or(format!(" reply to {}", id))                              )                              .unwrap_or("".to_string()),                          color::Fg(color::Reset) @@ -381,12 +382,13 @@ pub fn render_twete(twete_id: &TweetId, tweeter: &mut tw::TwitterCache) -> Vec<S                      ));                  }                  None => { -                    result.push(format!("{}  id:{}{}{}", +                    result.push(format!("{}  id {}{}{}",                          id_color, twete.internal_id,                          twete.reply_to_tweet.clone() -                            .map(|id| tweeter.retrieve_tweet(&TweetId::Twitter(id.to_owned())) -                                .and_then(|tw| Some(format!(" reply_to:{}", tw.internal_id))) -                                .unwrap_or(format!(" reply_to:twitter::{}", id)) +                            .map(|id_str| TweetId::Twitter(id_str.to_owned())) +                            .map(|id| tweeter.retrieve_tweet(&id) +                                .and_then(|tw| Some(format!(" reply to {}", tw.internal_id))) +                                .unwrap_or(format!(" reply to {}", id))                              )                              .unwrap_or("".to_string()),                          color::Fg(color::Reset) @@ -406,12 +408,13 @@ pub fn render_twete(twete_id: &TweetId, tweeter: &mut tw::TwitterCache) -> Vec<S                  let maybe_qt = tweeter.retrieve_tweet(&TweetId::Twitter(qt_id.to_owned())).map(|x| x.to_owned());                  if let Some(qt) = maybe_qt {                      let qt_author = tweeter.retrieve_user(&qt.author_id).unwrap().clone(); -                    result.push(format!("{}    id:{}{}{}", +                    result.push(format!("{}    id {}{}{}",                          id_color, qt.internal_id,                          qt.reply_to_tweet.clone() -                            .map(|id| tweeter.retrieve_tweet(&TweetId::Twitter(id.to_owned())) -                                .and_then(|tw| Some(format!(" reply_to:{}", tw.internal_id))) -                                .unwrap_or(format!(" reply_to:twitter::{}", id)) +                            .map(|id_str| TweetId::Twitter(id.to_owned())) +                            .map(|id| tweeter.retrieve_tweet(&id) +                                .and_then(|tw| Some(format!(" reply to {}", tw.internal_id))) +                                .unwrap_or(format!(" reply to {}", id))                              )                              .unwrap_or("".to_string()),                          color::Fg(color::Reset) diff --git a/src/tw/mod.rs b/src/tw/mod.rs index e2b8b03..b5ad72b 100644 --- a/src/tw/mod.rs +++ b/src/tw/mod.rs @@ -1,4 +1,5 @@  use std::path::Path; +use std::fmt;  use std::str::FromStr;  use std::fs::File;  use std::io::{BufRead, BufReader, Read}; @@ -167,6 +168,25 @@ pub enum TweetId {      Twitter(String)     // twitter::number  } +impl fmt::Display for TweetId { +    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { +        match self { +            &TweetId::Today(ref id) => { +                write!(f, "{}", id) +            }, +            &TweetId::Dated(ref date, ref id) => { +                write!(f, "{}:{}", date, id) +            }, +            &TweetId::Bare(ref id) => { +                write!(f, ":{}", id) +            }, +            &TweetId::Twitter(ref id) => { +                write!(f, "twitter:{}", id) +            } +        } +    } +} +  #[cfg(test)]  mod tests {      use super::*;  | 
