summaryrefslogtreecommitdiff
path: root/src/lua/iobuffer.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lua/iobuffer.rs')
-rw-r--r--src/lua/iobuffer.rs25
1 files changed, 15 insertions, 10 deletions
diff --git a/src/lua/iobuffer.rs b/src/lua/iobuffer.rs
index 1150e0d..baab111 100644
--- a/src/lua/iobuffer.rs
+++ b/src/lua/iobuffer.rs
@@ -1,33 +1,38 @@
use std::sync::RwLock;
+#[derive(Clone)]
+pub enum BufferChunk {
+ StdOut(String),
+ StdErr(String),
+}
+
pub struct IoBuffer {
- buffer: String,
+ buffer: Vec<BufferChunk>,
}
impl IoBuffer {
const fn new() -> Self {
Self {
- buffer: String::new(),
+ buffer: Vec::new(),
}
}
- pub fn get(&self) -> String {
+ pub fn get(&self) -> Vec<BufferChunk> {
self.buffer.clone()
}
- pub fn write<S>(&mut self, value: S)
+ pub fn print<S>(&mut self, value: S)
where
- S: AsRef<str>
+ S: std::string::ToString
{
- self.buffer += value.as_ref();
+ self.buffer.push(BufferChunk::StdOut(value.to_string()))
}
- pub fn writeln<S>(&mut self, value: S)
+ pub fn error<S>(&mut self, value: S)
where
- S: AsRef<str>
+ S: std::string::ToString
{
- self.buffer += value.as_ref();
- self.buffer += "\n";
+ self.buffer.push(BufferChunk::StdErr(value.to_string()))
}
}