codama_plugin_core/
default_plugin.rs1use crate::KorokPlugin;
2use codama_errors::CodamaResult;
3use codama_korok_visitors::{
4 ApplyDisplayVisitor, ApplyTypeModifiersVisitor, ApplyTypeOverridesVisitor,
5 CombineModulesVisitor, IdentifyFieldTypesVisitor, KorokVisitable, SetAccountsVisitor,
6 SetDefaultValuesVisitor, SetDefinedTypesVisitor, SetErrorsVisitor, SetEventsVisitor,
7 SetInstructionsVisitor, SetPdasVisitor, 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 ApplyDisplayVisitor::new())?;
17 visitable.accept(&mut SetDefaultValuesVisitor::new())?;
18 Ok(())
19 }
20
21 fn on_program_items_set(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
22 visitable.accept(&mut SetDefinedTypesVisitor::new())?;
23 visitable.accept(&mut SetPdasVisitor::new())?;
24 visitable.accept(&mut SetAccountsVisitor::new())?;
25 visitable.accept(&mut SetInstructionsVisitor::new())?;
26 visitable.accept(&mut SetErrorsVisitor::new())?;
27 visitable.accept(&mut SetEventsVisitor::new())?;
28 Ok(())
29 }
30
31 fn on_root_node_set(&self, visitable: &mut dyn KorokVisitable) -> CodamaResult<()> {
32 visitable.accept(&mut SetProgramMetadataVisitor::new())?;
33 visitable.accept(&mut CombineModulesVisitor::new())?;
34 Ok(())
35 }
36}