codama_korok_plugins/
default_plugin.rs1use crate::KorokPlugin;
2use codama_errors::CodamaResult;
3use codama_korok_visitors::{
4 ApplyTypeModifiersVisitor, ApplyTypeOverridesVisitor, CombineModulesVisitor,
5 IdentifyFieldTypesVisitor, KorokVisitable, SetAccountsVisitor, SetDefinedTypesVisitor,
6 SetErrorsVisitor, SetInstructionsVisitor, SetProgramMetadataVisitor,
7};
8
9pub struct DefaultPlugin;
10impl KorokPlugin for DefaultPlugin {
11 fn on_fields_set(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
12 visitable.accept(&mut IdentifyFieldTypesVisitor::new())?;
13 visitable.accept(&mut ApplyTypeOverridesVisitor::new())?;
14 visitable.accept(&mut ApplyTypeModifiersVisitor::new())?;
15 Ok(())
16 }
17
18 fn on_program_items_set(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
19 visitable.accept(&mut SetDefinedTypesVisitor::new())?;
20 visitable.accept(&mut SetAccountsVisitor::new())?;
21 visitable.accept(&mut SetInstructionsVisitor::new())?;
22 visitable.accept(&mut SetErrorsVisitor::new())?;
23 Ok(())
24 }
25
26 fn on_root_node_set(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
27 visitable.accept(&mut SetProgramMetadataVisitor::new())?;
28 visitable.accept(&mut CombineModulesVisitor::new())?;
29 Ok(())
30 }
31}