#![doc = include_str!("readme.md")]
use crate::ast::{ActionScriptItem, ActionScriptRoot};
pub struct ActionScriptFormatter {
_indent_level: usize,
_indent_str: String,
}
impl ActionScriptFormatter {
pub fn new() -> Self {
Self { _indent_level: 0, _indent_str: " ".to_string() }
}
pub fn format(&self, source: &str) -> String {
source.to_string()
}
pub fn format_ast(&self, root: &ActionScriptRoot) -> String {
let mut result = String::new();
for (i, item) in root.items.iter().enumerate() {
if i > 0 {
result.push_str("\n\n")
}
result.push_str(&self.format_item(item))
}
result
}
fn format_item(&self, item: &ActionScriptItem) -> String {
match item {
ActionScriptItem::Class(_) => "class {} // TODO".to_string(),
ActionScriptItem::Interface(_) => "interface {} // TODO".to_string(),
ActionScriptItem::Function(_) => "function() {} // TODO".to_string(),
ActionScriptItem::Variable(_) => "var x; // TODO".to_string(),
ActionScriptItem::Package(_) => "package {} // TODO".to_string(),
ActionScriptItem::Import(_) => "import {} // TODO".to_string(),
}
}
fn _get_indent(&self) -> String {
self._indent_str.repeat(self._indent_level)
}
}
impl Default for ActionScriptFormatter {
fn default() -> Self {
Self::new()
}
}