diff options
author | Pierre-Henri Symoneaux <pierre-henri.symoneaux@nokia.com> | 2017-05-29 22:37:52 +0200 |
---|---|---|
committer | Pierre-Henri Symoneaux <pierre-henri.symoneaux@nokia.com> | 2017-05-29 22:46:19 +0200 |
commit | 3356ea2da7471ff29241d679aa3147c9d42fd175 (patch) | |
tree | fa1d7cc0d0e2c59cb481f1b21769c5630bc6cd69 /src | |
parent | 43fe7364cb7ac6898cb2262bacc78db04f3b7108 (diff) |
Added category "command-line-interface" to Cargo.toml
Diffstat (limited to 'src')
-rw-r--r-- | src/utils.rs | 84 |
1 files changed, 42 insertions, 42 deletions
diff --git a/src/utils.rs b/src/utils.rs index 085c574..8f4bbf3 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -1,34 +1,34 @@ -//! Internal only utilities
-use std::io::{Error, ErrorKind, Write};
-use std::str;
-
-use unicode_width::UnicodeWidthStr;
-
-use super::format::Alignment;
-
-#[cfg(any(not(windows), not(feature="win_crlf")))]
-pub static NEWLINE: &'static [u8] = b"\n";
-#[cfg(all(windows, feature="win_crlf"))]
-pub static NEWLINE: &'static [u8] = b"\r\n";
-
-/// Internal utility for writing data into a string
-pub struct StringWriter {
+//! Internal only utilities +use std::io::{Error, ErrorKind, Write}; +use std::str; + +use unicode_width::UnicodeWidthStr; + +use super::format::Alignment; + +#[cfg(any(not(windows), not(feature="win_crlf")))] +pub static NEWLINE: &'static [u8] = b"\n"; +#[cfg(all(windows, feature="win_crlf"))] +pub static NEWLINE: &'static [u8] = b"\r\n"; + +/// Internal utility for writing data into a string +pub struct StringWriter { string: String, -}
-
-impl StringWriter {
+} + +impl StringWriter { /// Create a new `StringWriter` pub fn new() -> StringWriter { StringWriter { string: String::new() } } -
+ /// Return a reference to the internally written `String` pub fn as_string(&self) -> &str { &self.string } -}
-
-impl Write for StringWriter {
+} + +impl Write for StringWriter { fn write(&mut self, data: &[u8]) -> Result<usize, Error> { let string = match str::from_utf8(data) {
Ok(s) => s,
@@ -40,16 +40,16 @@ impl Write for StringWriter { self.string.push_str(string); Ok(data.len()) } -
+ fn flush(&mut self) -> Result<(), Error> { // Nothing to do here Ok(()) } -}
-
-/// Align/fill a string and print it to `out`
-/// If `skip_right_fill` is set to `true`, then no space will be added after the string
-/// to complete alignment
+} + +/// Align/fill a string and print it to `out` +/// If `skip_right_fill` is set to `true`, then no space will be added after the string +/// to complete alignment pub fn print_align<T: Write + ?Sized>(out: &mut T, align: Alignment, text: &str, @@ -73,14 +73,14 @@ pub fn print_align<T: Write + ?Sized>(out: &mut T, try!(out.write(&vec![fill as u8; nfill])); } Ok(()) -}
-
-#[cfg(test)]
-mod tests {
+} + +#[cfg(test)] +mod tests { use super::*; use format::Alignment; use std::io::Write; -
+ #[test] fn string_writer() { let mut out = StringWriter::new(); @@ -90,42 +90,42 @@ mod tests { out.write("bar".as_bytes()).unwrap(); assert_eq!(out.as_string(), "foo bar"); } -
+ #[test] fn fill_align() { let mut out = StringWriter::new(); print_align(&mut out, Alignment::RIGHT, "foo", '*', 10, false).unwrap(); assert_eq!(out.as_string(), "*******foo"); -
+ let mut out = StringWriter::new(); print_align(&mut out, Alignment::LEFT, "foo", '*', 10, false).unwrap(); assert_eq!(out.as_string(), "foo*******"); -
+ let mut out = StringWriter::new(); print_align(&mut out, Alignment::CENTER, "foo", '*', 10, false).unwrap(); assert_eq!(out.as_string(), "***foo****"); -
+ let mut out = StringWriter::new(); print_align(&mut out, Alignment::CENTER, "foo", '*', 1, false).unwrap(); assert_eq!(out.as_string(), "foo"); } -
+ #[test] fn skip_right_fill() { let mut out = StringWriter::new(); print_align(&mut out, Alignment::RIGHT, "foo", '*', 10, true).unwrap(); assert_eq!(out.as_string(), "*******foo"); -
+ let mut out = StringWriter::new(); print_align(&mut out, Alignment::LEFT, "foo", '*', 10, true).unwrap(); assert_eq!(out.as_string(), "foo"); -
+ let mut out = StringWriter::new(); print_align(&mut out, Alignment::CENTER, "foo", '*', 10, true).unwrap(); assert_eq!(out.as_string(), "***foo"); -
+ let mut out = StringWriter::new(); print_align(&mut out, Alignment::CENTER, "foo", '*', 1, false).unwrap(); assert_eq!(out.as_string(), "foo"); } -}
+} |