sudachi/plugin/connect_cost/
mod.rs1mod inhibit_connection;
18
19use serde_json::Value;
20
21use crate::config::Config;
22use crate::dic::grammar::Grammar;
23use crate::plugin::connect_cost::inhibit_connection::InhibitConnectionPlugin;
24use crate::plugin::PluginCategory;
25use crate::prelude::*;
26
27pub trait EditConnectionCostPlugin: Sync + Send {
29 fn set_up(&mut self, settings: &Value, config: &Config, grammar: &Grammar)
31 -> SudachiResult<()>;
32
33 fn edit(&self, grammar: &mut Grammar);
35}
36
37impl PluginCategory for dyn EditConnectionCostPlugin {
38 type BoxType = Box<dyn EditConnectionCostPlugin + Sync + Send>;
39 type InitFnType = unsafe fn() -> SudachiResult<Self::BoxType>;
40
41 fn configurations(cfg: &Config) -> &[Value] {
42 &cfg.connection_cost_plugins
43 }
44
45 fn bundled_impl(name: &str) -> Option<Self::BoxType> {
46 match name {
47 "InhibitConnectionPlugin" => Some(Box::<InhibitConnectionPlugin>::default()),
48 _ => None,
49 }
50 }
51
52 fn do_setup(
53 ptr: &mut Self::BoxType,
54 settings: &Value,
55 config: &Config,
56 grammar: &mut Grammar,
57 ) -> SudachiResult<()> {
58 ptr.set_up(settings, config, grammar)
59 }
60}