#![warn(missing_docs)]
use oak_ruby::{ast::RubyRoot, RubyBuilder, RubyLanguage};
use oak_core::{Builder, TextEdit, builder::BuildOutput};
pub struct RustyRubyFrontend {
language: RubyLanguage,
}
impl Default for RustyRubyFrontend {
fn default() -> Self {
Self::new()
}
}
impl RustyRubyFrontend {
pub fn new() -> Self {
Self {
language: RubyLanguage::new(),
}
}
pub fn parse(&self, source: &str) -> Result<RubyRoot, String> {
let builder = RubyBuilder::new(&self.language);
let edits: &[TextEdit] = &[];
let mut cache = oak_core::parser::ParseSession::default();
let output: BuildOutput<RubyLanguage> = builder.build(source, edits, &mut cache);
output.result.map_err(|e| e.to_string())
}
}