diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/evcxr.rs | 30 | ||||
-rw-r--r-- | src/lib.rs | 3 |
2 files changed, 33 insertions, 0 deletions
diff --git a/src/evcxr.rs b/src/evcxr.rs new file mode 100644 index 0000000..11d632a --- /dev/null +++ b/src/evcxr.rs @@ -0,0 +1,30 @@ +//! This modules contains traits and implementations to work within Evcxr + +use super::TableSlice; +use super::utils::StringWriter; +use std::io::Write; + +/// Evcxr specific output trait +pub trait EvcxrDisplay { + /// Print self in one or multiple Evcxr compatile types. + fn evcxr_display(&self); +} + +impl<'a, T> EvcxrDisplay for T +where + T: AsRef<TableSlice<'a>>, +{ + fn evcxr_display(&self) { + let mut writer = StringWriter::new(); + // Plain Text + let _ = writer.write_all(b"EVCXR_BEGIN_CONTENT text/plain\n"); + let _ = self.as_ref().print(&mut writer); + let _ = writer.write_all(b"\nEVCXR_END_CONTENT\n"); + + // Html + let _ = writer.write_all(b"EVCXR_BEGIN_CONTENT text/html\n"); + let _ = self.as_ref().print_html(&mut writer); + let _ = writer.write_all(b"\nEVCXR_END_CONTENT\n"); + println!("{}", writer.as_string()); + } +} @@ -24,6 +24,9 @@ mod utils; #[cfg(feature = "csv")] pub mod csv; +#[cfg(feature = "evcxr")] +pub mod evcxr; + pub use row::Row; pub use cell::Cell; use format::{TableFormat, LinePosition, consts}; |