summaryrefslogtreecommitdiffstats
path: root/src/evcxr.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/evcxr.rs')
-rw-r--r--src/evcxr.rs30
1 files changed, 30 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());
+ }
+}