1414 TBasicCommandDispatcherStrategySelector ,
1515)
1616from ..commands_executor import TVimCommandsExecutor
17- from ..config_manager import (
18- TBasicConfigValidator ,
19- TVimConfigGetter ,
20- TVimConfigManager ,
17+ from ..config import EDispatchersTypes , TConfigField , TVimConfig
18+ from ..config .getter import (
19+ TVimByFileExtConfigValueGetter ,
20+ TVimByFileTypeConfigValueGetter ,
21+ TVimByGlobConfigValueGetter ,
22+ TVimCoderunnerTempfilePrefixConfigValueGetter ,
23+ TVimDispatchersOrderConfigValueGetter ,
24+ TVimExecutorConfigValueGetter ,
25+ TVimIgnoreSelectionConfigValueGetter ,
26+ TVimRemoveCoderunnerTempfilesOnExitConfigValueGetter ,
27+ TVimRespectShebangConfigValueGetter ,
28+ TVimSaveAllFilesBeforeRunConfigValueGetter ,
29+ TVimSaveFileBeforeRunConfigValueGetter ,
30+ )
31+ from ..config .validator import (
32+ TBoolValidator ,
33+ TDispatchersOrderValidator ,
34+ TDispatchersValidator ,
35+ TStrValidator ,
2136)
2237from ..editor import TVimEditor
2338from ..editor_service_for_coderunner import TBasicEditorServiceForCodeRunner
2944
3045class TVimCodeRunnerFactory (ICodeRunnerFactory ):
3146 def create (self ) -> Optional [TCodeRunner ]:
32- config_manager : TVimConfigManager = TVimConfigManager ( TVimConfigGetter (), TBasicConfigValidator () )
47+ config : TVimConfig = self . _create_config ( )
3348 message_printer : TVimMessagePrinter = TVimMessagePrinter ()
3449
3550 try :
@@ -38,18 +53,16 @@ def create(self) -> Optional[TCodeRunner]:
3853
3954 editor : TVimEditor = TVimEditor ()
4055 editor_service_for_coderunner : TBasicEditorServiceForCodeRunner = TBasicEditorServiceForCodeRunner (
41- config_manager , editor , file_info_extractor
56+ config , editor , file_info_extractor
4257 )
4358
4459 command_dispatcher_strategy_selector : TBasicCommandDispatcherStrategySelector = (
45- self ._create_command_dispatcher_strategy_selector (
46- config_manager , file_info_extractor , project_info_extractor
47- )
60+ self ._create_command_dispatcher_strategy_selector (config , file_info_extractor , project_info_extractor )
4861 )
49- commands_executor : TVimCommandsExecutor = TVimCommandsExecutor (config_manager )
62+ commands_executor : TVimCommandsExecutor = TVimCommandsExecutor (config )
5063
5164 return TCodeRunner (
52- config_manager = config_manager ,
65+ config = config ,
5366 editor_service = editor_service_for_coderunner ,
5467 command_dispatcher_strategy_selector = command_dispatcher_strategy_selector ,
5568 commands_executor = commands_executor ,
@@ -61,72 +74,138 @@ def create(self) -> Optional[TCodeRunner]:
6174
6275 return None
6376
77+ def _create_config (self ) -> TVimConfig :
78+ return TVimConfig (
79+ by_file_ext_field = TConfigField (
80+ name = "g:coderunner_by_file_ext" ,
81+ getter = TVimByFileExtConfigValueGetter (),
82+ validator = TDispatchersValidator (),
83+ allowed_values_description = "Dict[str, str] value" ,
84+ ),
85+ by_file_type_field = TConfigField (
86+ name = "g:coderunner_by_file_type" ,
87+ getter = TVimByFileTypeConfigValueGetter (),
88+ validator = TDispatchersValidator (),
89+ allowed_values_description = "Dict[str, str] value" ,
90+ ),
91+ by_glob_field = TConfigField (
92+ name = "g:coderunner_by_glob" ,
93+ getter = TVimByGlobConfigValueGetter (),
94+ validator = TDispatchersValidator (),
95+ allowed_values_description = "Dict[str, str] value" ,
96+ ),
97+ dispatchers_order_field = TConfigField (
98+ name = "g:coderunner_runners_order" ,
99+ getter = TVimDispatchersOrderConfigValueGetter (),
100+ validator = TDispatchersOrderValidator (),
101+ allowed_values_description = ", " .join (dispatcher_type .value for dispatcher_type in EDispatchersTypes ),
102+ ),
103+ coderunner_tempfile_prefix_field = TConfigField (
104+ name = "g:coderunner_tempfile_prefix" ,
105+ getter = TVimCoderunnerTempfilePrefixConfigValueGetter (),
106+ validator = TStrValidator (),
107+ allowed_values_description = "str value" ,
108+ ),
109+ executor_field = TConfigField (
110+ name = "g:coderunner_executor" ,
111+ getter = TVimExecutorConfigValueGetter (),
112+ validator = TStrValidator (),
113+ allowed_values_description = "str value" ,
114+ ),
115+ ignore_selection_field = TConfigField (
116+ name = "g:coderunner_ignore_selection" ,
117+ getter = TVimIgnoreSelectionConfigValueGetter (),
118+ validator = TBoolValidator (),
119+ allowed_values_description = "0 or 1" ,
120+ ),
121+ respect_shebang_field = TConfigField (
122+ name = "g:coderunner_respect_shebang" ,
123+ getter = TVimRespectShebangConfigValueGetter (),
124+ validator = TBoolValidator (),
125+ allowed_values_description = "0 or 1" ,
126+ ),
127+ remove_coderunner_tempfiles_on_exit_field = TConfigField (
128+ name = "g:coderunner_remove_coderunner_tempfiles_on_exit" ,
129+ getter = TVimRemoveCoderunnerTempfilesOnExitConfigValueGetter (),
130+ validator = TBoolValidator (),
131+ allowed_values_description = "0 or 1" ,
132+ ),
133+ save_all_files_before_run_field = TConfigField (
134+ name = "g:coderunner_save_all_files_before_run" ,
135+ getter = TVimSaveAllFilesBeforeRunConfigValueGetter (),
136+ validator = TBoolValidator (),
137+ allowed_values_description = "0 or 1" ,
138+ ),
139+ save_file_before_run_field = TConfigField (
140+ name = "g:coderunner_save_file_before_run" ,
141+ getter = TVimSaveFileBeforeRunConfigValueGetter (),
142+ validator = TBoolValidator (),
143+ allowed_values_description = "0 or 1" ,
144+ ),
145+ )
146+
64147 def _create_command_dispatcher_strategy_selector (
65148 self ,
66- config_manager : TVimConfigManager ,
149+ config : TVimConfig ,
67150 file_info_extractor : TVimFileInfoExtractor ,
68151 project_info_extractor : TVimProjectInfoExtractor ,
69152 ) -> TBasicCommandDispatcherStrategySelector :
70153 shebang_command_builders_dispatcher : TShebangCommandBuildersDispatcher = TShebangCommandBuildersDispatcher (
71154 file_info_extractor
72155 )
73156 file_ext_command_builders_dispatcher : TFileExtCommandBuildersDispatcher = (
74- self ._create_file_ext_command_builders_dispatcher (
75- config_manager , file_info_extractor , project_info_extractor
76- )
157+ self ._create_file_ext_command_builders_dispatcher (config , file_info_extractor , project_info_extractor )
77158 )
78159 file_type_command_builders_dispatcher : TFileTypeCommandBuildersDispatcher = (
79- self ._create_file_type_command_builders_dispatcher (
80- config_manager , file_info_extractor , project_info_extractor
81- )
160+ self ._create_file_type_command_builders_dispatcher (config , file_info_extractor , project_info_extractor )
82161 )
83162 glob_command_builders_dispatcher : TGlobCommandBuildersDispatcher = (
84- self ._create_glob_command_builders_dispatcher (config_manager , file_info_extractor , project_info_extractor )
163+ self ._create_glob_command_builders_dispatcher (config , file_info_extractor , project_info_extractor )
85164 )
86165
87166 return TBasicCommandDispatcherStrategySelector (
167+ config = config ,
88168 shebang_command_builders_dispatcher = shebang_command_builders_dispatcher ,
89169 glob_command_builders_dispatcher = glob_command_builders_dispatcher ,
90170 file_ext_command_builders_dispatcher = file_ext_command_builders_dispatcher ,
91171 file_type_command_builders_dispatcher = file_type_command_builders_dispatcher ,
92- config_manager = config_manager ,
93172 )
94173
95174 def _create_file_ext_command_builders_dispatcher (
96175 self ,
97- config_manager : TVimConfigManager ,
176+ config : TVimConfig ,
98177 file_info_extractor : TVimFileInfoExtractor ,
99178 project_info_extractor : TVimProjectInfoExtractor ,
100179 ) -> TFileExtCommandBuildersDispatcher :
101180 return TFileExtCommandBuildersDispatcher (
102181 {
103182 key : TInterpolatorCommandBuilder (val , project_info_extractor , file_info_extractor )
104- for key , val in config_manager .get_by_file_ext ().items ()
183+ for key , val in config .get_by_file_ext ().items ()
105184 },
106185 file_info_extractor ,
107186 )
108187
109188 def _create_file_type_command_builders_dispatcher (
110189 self ,
111- config_manager : TVimConfigManager ,
190+ config : TVimConfig ,
112191 file_info_extractor : TVimFileInfoExtractor ,
113192 project_info_extractor : TVimProjectInfoExtractor ,
114193 ) -> TFileTypeCommandBuildersDispatcher :
115194 return TFileTypeCommandBuildersDispatcher (
116195 {
117196 key : TInterpolatorCommandBuilder (val , project_info_extractor , file_info_extractor )
118- for key , val in config_manager .get_by_file_type ().items ()
197+ for key , val in config .get_by_file_type ().items ()
119198 },
120199 file_info_extractor ,
121200 )
122201
123202 def _create_glob_command_builders_dispatcher (
124203 self ,
125- config_manager : TVimConfigManager ,
204+ config : TVimConfig ,
126205 file_info_extractor : TVimFileInfoExtractor ,
127206 project_info_extractor : TVimProjectInfoExtractor ,
128207 ) -> TGlobCommandBuildersDispatcher :
129- dict_with_commands : Dict [str , str ] = config_manager .get_by_glob ()
208+ dict_with_commands : Dict [str , str ] = config .get_by_glob ()
130209 return TGlobCommandBuildersDispatcher (
131210 tuple (
132211 (
0 commit comments