lua-assembler 0.1.1

Parse and write Lua .luac bytecode
Documentation
use gaia_types::writer::TextWriter;
use oak_core::source::ToSource;
use oak_lua::ast::LuaRoot;
use oak_pretty_print::{to_doc::AsDocument, FormatConfig, Formatter};
use std::fmt::Write;

#[derive(Debug)]
pub struct LuaWriter<W> {
    writer: TextWriter<W>,
}

impl<W: Write> LuaWriter<W> {
    pub fn new(writer: TextWriter<W>) -> Self {
        Self { writer }
    }

    pub fn write_ast(&mut self, ast: &LuaRoot) -> Result<(), std::fmt::Error> {
        let source = ast.to_source_string();
        self.writer.write_line(&source)?;
        Ok(())
    }

    pub fn write_doc(&mut self, ast: &LuaRoot) -> Result<(), std::fmt::Error> {
        let doc = ast.as_document();
        let config = FormatConfig::default();
        let source = doc.render(config);
        self.writer.write_line(&source)?;
        Ok(())
    }

    pub fn finish(self) -> W {
        self.writer.finish()
    }
}