reluxscript 0.1.4

Write AST transformations once. Compile to Babel, SWC, and beyond.
Documentation
// Generated by ReluxScript compiler
// Do not edit manually

use swc_common::{Span, DUMMY_SP, SyntaxContext};
use swc_ecma_ast::*;
use swc_ecma_visit::{Visit, VisitMut, VisitMutWith, VisitWith};

pub struct TestWriter {
    output: String,
    indent_level: usize,
}

impl Visit for TestWriter {}

impl TestWriter {
    pub fn new() -> Self {
        Self {
            output: String::new(),
            indent_level: 0,
        }
    }
    
    fn append(&mut self, s: &str) {
        self.output.push_str(s);
    }
    
    fn append_line(&mut self, s: &str) {
        for _ in 0..self.indent_level {
            self.output.push_str("    ");
        }
        self.output.push_str(s);
        self.output.push('\n');
    }
    
    fn indent(&mut self) {
        self.indent_level += 1;
    }
    
    fn dedent(&mut self) {
        if self.indent_level > 0 {
            self.indent_level -= 1;
        }
    }
    
    fn newline(&mut self) {
        self.output.push('\n');
    }
    
    pub fn to_string(&self) -> String {
        self.output.clone()
    }
    
    fn write_program(&mut self, program: &Program) -> String {
        self.append_line("fn main() {");
        self.indent();
        self.append_line("println!(\"Hello\");");
        self.dedent();
        self.append_line("}");
        self.to_string()
    }
    
}