<?xml version="1.0"?>
<ruleset name="Soil">
    <description>PSR12 with PHP 5.6+ compatibility</description>
    <arg name="extensions" value="php"/>
    <arg name="colors"/>
    <arg value="sp"/>

    <!-- PHP compatibility takes precedent over PSR12 -->
    <rule ref="PHPCompatibility"/>
    <rule ref="PSR12"/>

    <!-- Support for PHP 5.6+ -->
    <config name="testVersion" value="5.6-"/>

    <file>soil.php</file>
    <file>src</file>
    <file>tests</file>

    <!-- We should be cognizant of long lines, but handle it case-by-case -->
    <rule ref="Generic.Files.LineLength.TooLong">
        <severity>1</severity>
    </rule>

    <!-- I like to use snake_case for test names -->
    <rule ref="PSR1.Methods.CamelCapsMethodName.NotCamelCaps">
        <exclude-pattern>tests/*</exclude-pattern>
    </rule>

    <!-- WordPress -->
	<rule ref="WordPress.WP.I18n">
		<properties>
			<property name="text_domain" type="array">
				<element value="soil"/>
			</property>
		</properties>
	</rule>
    <rule ref="WordPress.CodeAnalysis.EmptyStatement"/>
    <rule ref="WordPress.CodeAnalysis.EscapedNotTranslated"/>
    <rule ref="WordPress.DB"/>
    <rule ref="WordPress.DateTime"/>
    <rule ref="WordPress.Security"/>
    <rule ref="WordPress.Utils.I18nTextDomainFixer"/>
    <rule ref="WordPress.PHP">
        <exclude name="WordPress.PHP.YodaConditions"/>
        <exclude name="WordPress.PHP.DisallowShortTernary"/>
    </rule>
    <rule ref="WordPress.WP">
        <exclude name="WordPress.WP.TimezoneChange"/>
    </rule>
</ruleset>
