Esempio n. 1
0
    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
Esempio n. 2
0
    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
Esempio n. 3
0
    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