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()
}
}