codama-plugin-core 0.13.2

Korok plugins definitions
Documentation
use crate::KorokPlugin;
use codama_errors::CodamaResult;
use codama_korok_visitors::{
    ApplyDisplayVisitor, ApplyTypeModifiersVisitor, ApplyTypeOverridesVisitor,
    CombineModulesVisitor, IdentifyFieldTypesVisitor, KorokVisitable, SetAccountsVisitor,
    SetDefaultValuesVisitor, SetDefinedTypesVisitor, SetErrorsVisitor, SetEventsVisitor,
    SetInstructionsVisitor, SetPdasVisitor, SetProgramMetadataVisitor,
};

pub struct DefaultPlugin;
impl KorokPlugin for DefaultPlugin {
    fn on_fields_set(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
        visitable.accept(&mut IdentifyFieldTypesVisitor::new())?;
        visitable.accept(&mut ApplyTypeOverridesVisitor::new())?;
        visitable.accept(&mut ApplyTypeModifiersVisitor::new())?;
        visitable.accept(&mut ApplyDisplayVisitor::new())?;
        visitable.accept(&mut SetDefaultValuesVisitor::new())?;
        Ok(())
    }

    fn on_program_items_set(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
        visitable.accept(&mut SetDefinedTypesVisitor::new())?;
        visitable.accept(&mut SetPdasVisitor::new())?;
        visitable.accept(&mut SetAccountsVisitor::new())?;
        visitable.accept(&mut SetInstructionsVisitor::new())?;
        visitable.accept(&mut SetErrorsVisitor::new())?;
        visitable.accept(&mut SetEventsVisitor::new())?;
        Ok(())
    }

    fn on_root_node_set(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
        visitable.accept(&mut SetProgramMetadataVisitor::new())?;
        visitable.accept(&mut CombineModulesVisitor::new())?;
        Ok(())
    }
}