def parse_prettier_options(self, view, parsed_additional_cli_args, prettier_config_path, has_custom_config_defined, has_no_config_defined, has_config_precedence_defined, prettier_ignore_filepath, file_name): prettier_options = [] # # Check for prettier config file: prettier_config_exists = not is_str_none_or_empty(prettier_config_path) if prettier_config_exists: if not has_custom_config_defined: # only add the '--config <path>' option if it's not # already specified as an additional cli arg: prettier_options.append('--config') prettier_options.append(prettier_config_path) # set config-precedence to 'prefer-file' if # the key wasn't defined in additional_cli_args: if not has_config_precedence_defined: prettier_options.append('--config-precedence') prettier_options.append('cli-override') else: if not has_no_config_defined and not has_custom_config_defined: # only add the '--no-config' option if it's not # already specified as an additional cli arg: prettier_options.append('--no-config') # # Iterate over option map: for mapping in PRETTIER_OPTION_CLI_MAP: option_name = mapping['option'] cli_option_name = mapping['cli'] option_value = get_sub_setting(self.view, option_name) if option_name == 'parser': if self.is_css(view): prettier_options.append(cli_option_name) prettier_options.append('css') continue if self.is_typescript(view): prettier_options.append(cli_option_name) prettier_options.append('typescript') continue if self.is_json(view): prettier_options.append(cli_option_name) prettier_options.append('json') continue if self.is_graphql(view): prettier_options.append(cli_option_name) prettier_options.append('graphql') continue if self.is_markdown(view): prettier_options.append(cli_option_name) prettier_options.append('markdown') continue if self.is_vue(view): prettier_options.append(cli_option_name) prettier_options.append('vue') continue if not prettier_config_exists and not has_custom_config_defined: # add the cli args or the respective defaults: if option_value is None or str(option_value) == '': option_value = mapping['default'] option_value = str(option_value).strip() if is_bool_str(option_value): option_value = option_value.lower() prettier_options.append(cli_option_name) prettier_options.append(option_value) # set the `tabWidth` option based on the current view: prettier_options.append('--tab-width') prettier_options.append(str(self.tab_size)) # set the `useTabs` option based on the current view: prettier_options.append('--use-tabs') prettier_options.append(str(self.use_tabs).lower()) # add the current file name to `--stdin-filepath`, only when # the current file being edited is NOT html, and in order # detect and format css/js selection(s) within html files: if not self.is_html(view): prettier_options.append('--stdin-filepath') prettier_options.append(file_name) if prettier_ignore_filepath is not None: prettier_options.append('--ignore-path') prettier_options.append(prettier_ignore_filepath) # Append any additional specified arguments: prettier_options.extend(parsed_additional_cli_args) return prettier_options
def parse_prettier_options(self, view, parsed_additional_cli_args, prettier_config_path, has_custom_config_defined, has_no_config_defined, has_config_precedence_defined, prettier_ignore_filepath, file_name): prettier_options = [] # # Check for prettier config file: prettier_config_exists = not is_str_none_or_empty(prettier_config_path) if prettier_config_exists: if not has_custom_config_defined: # only add the '--config <path>' option if it's not # already specified as an additional cli arg: prettier_options.append('--config') prettier_options.append(prettier_config_path) # set config-precedence to 'cli-override' if # the key wasn't defined in additional_cli_args: if not has_config_precedence_defined: prettier_options.append('--config-precedence') prettier_options.append('cli-override') else: if not has_no_config_defined and not has_custom_config_defined: # only add the '--no-config' option if it's not # already specified as an additional cli arg: prettier_options.append('--no-config') # # Iterate over option map: for mapping in PRETTIER_OPTION_CLI_MAP: option_name = mapping['option'] cli_option_name = mapping['cli'] option_value = get_sub_setting(view, option_name) if option_name == 'parser': if self.is_typescript(view): prettier_options.append(cli_option_name) prettier_options.append('typescript') continue elif self.is_package_or_composer_json(view): prettier_options.append(cli_option_name) prettier_options.append('json-stringify') continue elif self.is_json(view): prettier_options.append(cli_option_name) prettier_options.append('json') continue elif self.is_graphql(view): prettier_options.append(cli_option_name) prettier_options.append('graphql') continue elif self.is_mdx(view): prettier_options.append(cli_option_name) prettier_options.append('mdx') continue elif self.is_markdown(view): prettier_options.append(cli_option_name) prettier_options.append('markdown') continue elif self.is_yaml(view): prettier_options.append(cli_option_name) prettier_options.append('yaml') continue elif self.is_vue(view): prettier_options.append(cli_option_name) prettier_options.append('vue') continue elif self.is_angular_html(view): prettier_options.append(cli_option_name) prettier_options.append('angular') continue elif self.is_source_js(view) or self.is_es_module(view): prettier_options.append(cli_option_name) prettier_options.append('babel') continue elif self.is_css(view): prettier_options.append(cli_option_name) prettier_options.append('css') continue elif self.is_html(view): prettier_options.append(cli_option_name) prettier_options.append('html') continue elif self.is_php(view): prettier_options.append(cli_option_name) prettier_options.append('php') continue else: # parser couldn't be detected... let Prettier try to infer it via --stdin-filepath: continue if not prettier_config_exists and not has_custom_config_defined: # add the cli args or the respective defaults: if option_value is None or str(option_value) == '': option_value = mapping['default'] option_value = str(option_value).strip() # special handling for "tabWidth": if option_name == 'tabWidth': has_additional_cli_for_tab_width = parsed_additional_cli_args.count( '--tab-width') > 0 if not has_additional_cli_for_tab_width: if self.disable_tab_width_auto_detection is False: # set `tabWidth` from st "tab_size" setting (default behavior) prettier_options.append(cli_option_name) prettier_options.append(str(self.tab_size)) else: if not has_additional_cli_for_tab_width: prettier_options.append(cli_option_name) prettier_options.append(option_value) else: if not has_additional_cli_for_tab_width: prettier_options.append(cli_option_name) prettier_options.append(option_value) continue # handle bool types: if is_bool_str(option_value): option_value = option_value.lower() # append the opt/val: prettier_options.append(cli_option_name) prettier_options.append(option_value) # set the `useTabs` option based on the current view: prettier_options.append('--use-tabs') prettier_options.append(str(self.use_tabs).lower()) if prettier_ignore_filepath is not None: prettier_options.append('--ignore-path') prettier_options.append(prettier_ignore_filepath) # add the current file name to `--stdin-filepath`, only when # the current file being edited is NOT html, and in order # detect and format css/js selection(s) within html files: # if not self.is_html(view): prettier_options.append('--stdin-filepath') prettier_options.append(file_name) if debug_enabled(view): if not parsed_additional_cli_args.count('--loglevel') > 0: # set prettier's log level to debug, when the plug-in's debug setting is enabled: prettier_options.append('--loglevel') prettier_options.append('debug') # Append any additional specified arguments: prettier_options.extend(parsed_additional_cli_args) return prettier_options