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