<?xml version="1.0"?>
<ruleset name="CheckoutWC Coding Standards">
    <description>WooCommerce extension PHP_CodeSniffer ruleset.</description>

    <!-- Exclude paths -->
    <exclude-pattern>tests/</exclude-pattern>
    <exclude-pattern>dist/</exclude-pattern>
    <exclude-pattern>*/node_modules/*</exclude-pattern>
    <exclude-pattern>*/vendor/*</exclude-pattern>

    <!-- Configs -->
    <config name="minimum_supported_wp_version" value="4.7" />
    <config name="testVersion" value="7.4-" />

    <!-- Rules -->
    <rule ref="WordPress-Extra">
        <exclude name="WordPress.NamingConventions.ValidVariableName.VariableNotSnakeCase" />
        <exclude name="Squiz.Commenting.FunctionComment.Missing" />
        <exclude name="Squiz.Commenting.InlineComment.InvalidEndChar" />
        <exclude name="WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase" />
        <exclude name="WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid" />
        <exclude name="WordPress.NamingConventions.ValidVariableName.PropertyNotSnakeCase" />
        <exclude name="Squiz.Commenting.VariableComment.Missing" />
        <exclude name="Squiz.Commenting.ClassComment.Missing" />
        <exclude name="Squiz.Commenting.FileComment.Missing" />
        <exclude name="Generic.Commenting.DocComment.MissingShort" />
        <exclude name="WordPress.Files.FileName.InvalidClassFileName" />
        <exclude name="WordPress.Files.FileName.NotHyphenatedLowercase" />
    </rule>

    <rule ref="WooCommerce-Core">
        <exclude name="Core.Commenting.CommentTags.AuthorTag" />
        <exclude name="WordPress.PHP.DontExtract" />
        <exclude name="Generic.Arrays.DisallowShortArraySyntax" />
        <exclude name="Generic.WhiteSpace.ScopeIndent.Incorrect" />
    </rule>

    <rule ref="WordPress.Security.EscapeOutput">
        <properties>
            <property name="customEscapingFunctions" type="array" value="cfw_esc_attr__,cfw_esc_html__,cfw_esc_attr_e,cfw_esc_html_e,cfw_esc_attr_x,cfw_esc_html_x" />
        </properties>
    </rule>

    <rule ref="PHPCompatibility">
        <exclude-pattern>tests/</exclude-pattern>
    </rule>

    <rule ref="WordPress.WP.Capabilities">
        <properties>
            <property name="custom_capabilities" type="array">
                <element value="cfw_manage_local_pickup" />
                <element value="cfw_export_settings" />
                <element value="cfw_import_settings" />
                <element value="cfw_manage_general" />
                <element value="cfw_manage_acr" />
                <element value="cfw_manage_order_bumps" />
                <element value="cfw_manage_ab_tests" />
                <element value="cfw_view_acr_reports" />
                <element value="cfw_manage_options" />
            </property>
        </properties>
    </rule>
</ruleset>