@@ -135,21 +135,23 @@ pre-commit install
135135### Plugin architecture
136136``` mermaid
137137classDiagram
138- TCodeRunner "1" o--> "1" IConfigManager : aggregates
138+ TCodeRunner "1" o--> "1" IConfig : aggregates
139139TCodeRunner "1" o--> "1" ICommandsExecutor : aggregates
140140TCodeRunner "1" o--> "1" IMessagePrinter : aggregates
141141TCodeRunner "1" o--> "1" TBasicEditorServiceForCodeRunner : aggregates
142142TCodeRunner "1" o--> "1" TBasicCommandDispatcherStrategySelector : aggregates
143- IConfigManager "1" o--> "1" IConfigGetter : aggregates
144- IConfigManager "1" o--> "1" TBasicConfigValidator : aggregates
143+ Tconfig ..|> IConfig : implements
144+ TConfig "1" o--> "n" TConfigField : aggregates
145+ TConfigField "1" o--> "1" IConfigValueGetter : aggregates
146+ TConfigField "1" o--> "1" IValidator : aggregates
145147TBasicEditorServiceForCodeRunner "1" o--> "1" IEditor : aggregates
146- TBasicEditorServiceForCodeRunner "1" o--> "1" IConfigManager : aggregates
147- ICommandsExecutor "1" o--> "1" IConfigManager : aggregates
148+ TBasicEditorServiceForCodeRunner "1" o--> "1" IConfig : aggregates
149+ ICommandsExecutor "1" o--> "1" IConfig : aggregates
148150TBasicCommandDispatcherStrategySelector "1" o--> "1" TShebangCommandBuildersDispatcher : aggregates
149151TBasicCommandDispatcherStrategySelector "1" o--> "1" TGlobCommandBuildersDispatcher : aggregates
150152TBasicCommandDispatcherStrategySelector "1" o--> "1" TFileExtCommandBuildersDispatcher : aggregates
151153TBasicCommandDispatcherStrategySelector "1" o--> "1" TFileTypeCommandBuildersDispatcher : aggregates
152- TBasicCommandDispatcherStrategySelector "1" o--> "1" IConfigManager : aggregates
154+ TBasicCommandDispatcherStrategySelector "1" o--> "1" IConfig : aggregates
153155TShebangCommandBuildersDispatcher ..|> ICommandBuildersDispatcher : implements
154156TShebangCommandBuildersDispatcher "1" o--> "1" IFileInfoExtractor : aggregates
155157TGlobCommandBuildersDispatcher ..|> ICommandBuildersDispatcher : implements
@@ -166,7 +168,7 @@ TBaseFileInfoExtractor ..|> IFileInfoExtractor : implements
166168
167169
168170class TCodeRunner {
169- # config_manager: IConfigManager
171+ # config:IConfig
170172 # editor_service: TBasicEditorServiceForCodeRunner
171173 # command_dispatcher_strategy_selector: TBasicCommandDispatcherStrategySelector
172174 # commands_executor: ICommandsExecutor
@@ -180,40 +182,48 @@ class TCodeRunner {
180182}
181183
182184
183-
184- class IConfigManager {
185+ class IConfig {
185186 <<interface>>
186- + get_dispatchers_order() list[str]
187+ + get_by_file_ext() Dict[str, str]
188+ + get_by_file_type() Dict[str, str]
189+ + get_by_glob() Dict[str, str]
190+ + get_dispatchers_order() List[EDispatchersTypes]
191+ + get_coderunner_tempfile_prefix() str
187192 + get_executor() str
188193 + get_ignore_selection() bool
189194 + get_respect_shebang() bool
190- + get_save_all_files() bool
191- + get_save_file() bool
195+ + get_remove_coderunner_tempfiles_on_exit() bool
196+ + get_save_all_files_before_run() bool
197+ + get_save_file_before_run() bool
192198}
193199
194200
195- class IConfigGetter {
196- <<interface>>
197- + get_dispatchers_order() Any
198- + get_executor() Any
199- + get_ignore_selection() Any
200- + get_respect_shebang() Any
201- + get_save_all_files() Any
202- + get_save_file() Any
201+ class TConfigField {
202+ # name: str
203+ # getter: IConfigValueGetter
204+ # validator: IValidator
205+ # allowed_values_description: str
206+ + get() ValueType
207+ }
208+
209+
210+ class IConfigValueGetter {
211+ <<interface>>
212+ + __call__() Any
203213}
204214
205215
206- class TBasicConfigValidator {
207- + validate_bool() bool
208- + validate_str() str
209- + validate_dispatcher() Dict[str, str]
210- + validate_dispatchers_order() List[EDispatchersTypes]
216+ class IValidator {
217+ <<interface>>
218+ + __call__(value: Any) ValueType
219+
211220}
212221
213222
214223class TBasicEditorServiceForCodeRunner {
215224 # editor: IEditor
216- # config_manager: IConfigManager
225+ # config:IConfig
226+ # file_info_extractor: IFileInfoExtractor
217227 Creates context which will delete file if it's temporary
218228 + get_file_for_run() Context[str]
219229 Runs save_file or save_all_files if the command_builder is found,
@@ -246,7 +256,7 @@ class IMessagePrinter {
246256
247257
248258class TBasicCommandDispatcherStrategySelector {
249- # config_manager: IConfigManager
259+ # config: IConfig
250260 # shebang_dispatcher: TShebangCommandBuildersDispatcher
251261 # file_type_dispatcher: TFileExtCommandBuildersDispatcher
252262 # file_ext_dispatcher: TFileTypeCommandBuildersDispatcher
0 commit comments