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.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/lua/iobuffer.rs b/src/lua/iobuffer.rs
new file mode 100644
index 0000000..1150e0d
--- /dev/null
+++ b/src/lua/iobuffer.rs
@@ -0,0 +1,38 @@
+use std::sync::RwLock;
+
+pub struct IoBuffer {
+ buffer: String,
+}
+
+impl IoBuffer {
+ const fn new() -> Self {
+ Self {
+ buffer: String::new(),
+ }
+ }
+
+ pub fn get(&self) -> String {
+ self.buffer.clone()
+ }
+
+ pub fn write<S>(&mut self, value: S)
+ where
+ S: AsRef<str>
+ {
+ self.buffer += value.as_ref();
+ }
+
+ pub fn writeln<S>(&mut self, value: S)
+ where
+ S: AsRef<str>
+ {
+ self.buffer += value.as_ref();
+ self.buffer += "\n";
+ }
+}
+
+static STDOUT_BUFFER: RwLock<IoBuffer> = RwLock::new(IoBuffer::new());
+
+pub fn iobuffer() -> &'static RwLock<IoBuffer> {
+ &STDOUT_BUFFER
+}