<?xml version="1.0"?>
<ruleset name="WordPress Coding Standards">
	<description>Apply WordPress Coding Standards</description>

	<!-- Set the memory limit to 256M.
		 For most standard PHP configurations, this means the memory limit will temporarily be raised.
		 Ref: https://github.com/squizlabs/PHP_CodeSniffer/wiki/Advanced-Usage#specifying-phpini-settings
	-->
	<ini name="memory_limit" value="256M"/>

	<!-- Whenever possible, cache the scan results and re-use those for unchanged files on the next scan. -->
	<arg name="cache"/>

	<!-- Strip the filepaths down to the relevant bit. -->
	<arg name="basepath" value="./"/>

	<!-- Check up to 20 files simultaneously. -->
	<arg name="parallel" value="20"/>

	<!-- Show sniff codes in all reports. -->
	<arg value="ps"/>

	<!-- Use WordPress "Extra" Coding Standards. -->
	<rule ref="WordPress-Extra">
		<!-- Allow array short syntax. -->
		<exclude name="Generic.Arrays.DisallowShortArraySyntax" />
		<!-- Allow short prefixes. -->
		<exclude name="WordPress.NamingConventions.PrefixAllGlobals.ShortPrefixPassed"/>
	</rule>

	<!-- Use WordPress "Docs" Coding Standards. -->
	<rule ref="WordPress-Docs">
		<exclude name="Squiz.Commenting.FileComment.Missing"/>
		<exclude name="Squiz.Commenting.FileComment.WrongStyle"/>
	</rule>

	<!-- The minimum supported WordPress version. This should match what's listed in style.css. -->
	<rule ref="WordPress.WP.DeprecatedFunctions">
		<properties>
			<property name="minimum_supported_version" value="5.6"/>
		</properties>
	</rule>

	<!-- Allow for theme specific exceptions to the file name rules based on the theme hierarchy. -->
	<rule ref="WordPress.Files.FileName">
		<properties>
			<property name="is_plugin" value="true"/>
		</properties>
	</rule>

	<!-- Verify that everything in the global namespace is prefixed with a theme specific prefix.
		 Multiple valid prefixes can be provided as a comma-delimited list. -->
	<rule ref="WordPress.NamingConventions.PrefixAllGlobals">
		<properties>
			<property name="prefixes" type="array" value="presentation" />
		</properties>
	</rule>

	<!-- Verify that the text_domain is set to the desired text-domain.
		 Multiple valid text domains can be provided as a comma-delimited list. -->
	<rule ref="WordPress.WP.I18n">
		<properties>
			<property name="text_domain" type="array" value="presentation"/>
		</properties>
	</rule>

	<!-- Use WordPress PHP Compatibility. -->
	<rule ref="PHPCompatibilityWP"/>

	<!-- WebDevStudios uses PHP 7.4+. -->
	<config name="testVersion" value="7.4-"/>

	<!-- Only sniff PHP files. -->
	<arg name="extensions" value="php"/>

	<!-- Only sniff the theme. -->
	<file>./</file>

	<!-- Don't sniff the following directories or file types. -->
	<exclude-pattern>/build/*</exclude-pattern>
	<exclude-pattern>/node_modules/*</exclude-pattern>
	<exclude-pattern>/vendor/*</exclude-pattern>
</ruleset>
