1pub extern crate ferris_says;
2
3#[macro_export]
4macro_rules! ferrisprint {
5($fmt:expr) => {
6 {
7 use std::io::{stdout, BufWriter};
8 let stdout = stdout();
9 let width = 24;
10 let mut writer = BufWriter::new(stdout.lock());
11 $crate::ferris_says::say(concat!($fmt).as_bytes(), width, &mut writer).unwrap();
12 }
13 };
14($fmt:expr, $($arg:tt)*) => {
15 {
16 use std::io::{stdout, BufWriter};
17 let stdout = stdout();
18 let width = 24;
19 let mut writer = BufWriter::new(stdout.lock());
20 $crate::ferris_says::say(format!(concat!($fmt), $($arg)*).as_bytes(), width, &mut writer).unwrap();
21 }
22 };
23}
24
25#[cfg(test)]
26mod tests {
27 #[test]
28 fn ferrisprint_macro_works() {
29 ferrisprint!("hola");
30 let str = "ok";
31 ferrisprint!("hey {}", &str);
32 }
33
34 #[test]
35 fn ferrisprint_macro_works_with_multiple_arguments() {
36 ferrisprint!("I am {} the {}", "ferris", "crab");
37 }
38}