From 48e61c63773491f7801b746c57a1c6727e4f12bf Mon Sep 17 00:00:00 2001 From: Jordan Petridis Date: Thu, 7 Dec 2017 18:31:45 +0200 Subject: [PATCH] Added small a utility that eats extra whitespace. --- hammond-data/src/utils.rs | 27 +++++++++++++++++++++++++++ hammond-gtk/src/widgets/episode.rs | 5 +++-- 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/hammond-data/src/utils.rs b/hammond-data/src/utils.rs index 75e78f5..e342151 100644 --- a/hammond-data/src/utils.rs +++ b/hammond-data/src/utils.rs @@ -105,6 +105,15 @@ pub fn url_cleaner(s: &str) -> String { } } +/// Placeholder +// TODO: Docs +pub fn replace_extra_spaces(s: &str) -> String { + s.lines() + .map(|x| x.split_whitespace().collect::>().join(" ")) + .filter(|x| !x.is_empty()) + .collect::>().join("\n") +} + #[cfg(test)] mod tests { extern crate tempdir; @@ -241,4 +250,22 @@ mod tests { assert_eq!(url_cleaner(good_url), good_url); assert_eq!(url_cleaner(&format!(" {}\t\n", bad_url)), good_url); } + + #[test] + fn test_whitespace() { + let bad_txt = "1 2 3 4 5"; + let valid_txt = "1 2 3 4 5"; + + assert_eq!(replace_extra_spaces(&bad_txt), valid_txt); + + let bad_txt = "1 2 3 \n 4 5\n"; + let valid_txt = "1 2 3\n4 5"; + + assert_eq!(replace_extra_spaces(&bad_txt), valid_txt); + + let bad_txt = "1 2 3 \n\n\n \n 4 5\n"; + let valid_txt = "1 2 3\n4 5"; + + assert_eq!(replace_extra_spaces(&bad_txt), valid_txt); + } } diff --git a/hammond-gtk/src/widgets/episode.rs b/hammond-gtk/src/widgets/episode.rs index 4d876df..4c61aac 100644 --- a/hammond-gtk/src/widgets/episode.rs +++ b/hammond-gtk/src/widgets/episode.rs @@ -12,6 +12,7 @@ use hammond_data::{Episode, Podcast}; use hammond_downloader::downloader; use hammond_data::utils::*; use hammond_data::errors::*; +use hammond_data::utils::replace_extra_spaces; // use utils::html_to_markup; @@ -90,10 +91,10 @@ impl EpisodeWidget { // html_to_markup(&mut text); // description.set_markup(&text) - let plain_text = strip_html_tags(&text).join(""); + let plain_text = strip_html_tags(&text).join(" "); // TODO: handle unwrap let buff = description.get_buffer().unwrap(); - buff.set_text(plain_text.trim()); + buff.set_text(&replace_extra_spaces(&plain_text)); })); }