<?xml version="1.0"?>
<ruleset name="Laravel Standards">

    <description>The Laravel Coding Standards</description>
    <rule ref="PSR12">
        <exclude name="PSR12.Traits.UseDeclaration.MultipleImport" />
    </rule>


    <rule ref="PSR1">
        <exclude name="PSR1.Classes.ClassDeclaration.MissingNamespace" />
        <exclude name="PSR1.Methods.CamelCapsMethodName.NotCamelCaps" />
        <exclude name="PSR1.Files.SideEffects.FoundWithSymbols" />
        <exclude name="PSR1.Classes.ClassDeclaration.MultipleClasses" />
    </rule>

    <rule ref="PSR2">
        <exclude name="Squiz.Classes.ValidClassName.NotCamelCaps" />

        <!-- Excluded to avoid conflict with the same rule (!??!) in PSR12. -->
        <exclude name="PSR2.ControlStructures.ControlStructureSpacing" />
    </rule>

    <!-- View templates don't necessarily start with <?php (because some are just pure html) -->
    <rule ref="PSR12.Files.FileHeader.HeaderPosition">
        <exclude-pattern>*/views/*</exclude-pattern>
    </rule>

    <!-- We like to have a space after the ! operator. -->
    <rule ref="Generic.Formatting.SpaceAfterNot" />

    <!-- Rules to improve array formatting. -->
    <rule ref="Generic.Arrays.DisallowLongArraySyntax" />
    <rule ref="Generic.Arrays.ArrayIndent" />
    <rule ref="Squiz.Arrays.ArrayDeclaration.DoubleArrowNotAligned" />


    <!-- Remove trailing whitespace, multiple blank lines within functions, etc. -->
    <rule ref="Squiz.WhiteSpace.SuperfluousWhitespace">
        <properties>
            <property name="ignoreBlankLines" value="false" />
        </properties>
    </rule>
    <rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.StartFile">
        <severity>10</severity>
    </rule>
    <rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EndFile">
        <severity>10</severity>
    </rule>
    <rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EmptyLines">
        <severity>10</severity>
    </rule>
    <rule ref="Squiz.ControlStructures.ControlSignature.NewlineAfterOpenBrace">
        <severity>10</severity>
    </rule>
    <rule ref="Squiz.Commenting.BlockComment">
        <exclude name="Squiz.Commenting.BlockComment.HasEmptyLineBefore" />
        <exclude name="Squiz.Commenting.BlockComment.WrongStart" />
    </rule>

    <!-- indentation of 4 spaces -->
    <rule ref="Generic.WhiteSpace.ScopeIndent">
        <properties>
            <property name="exact" value="true" />
        </properties>
    </rule>


    <exclude-pattern>*/_ide_helper.php</exclude-pattern>
    <exclude-pattern>*/cache/*</exclude-pattern>
    <exclude-pattern>*/*.js</exclude-pattern>
    <exclude-pattern>*/*.css</exclude-pattern>
    <exclude-pattern>*/*.xml</exclude-pattern>
    <exclude-pattern>*/*.blade.php</exclude-pattern>
    <exclude-pattern>*/autoload.php</exclude-pattern>
    <exclude-pattern>*/storage/*</exclude-pattern>
    <exclude-pattern>*/docs/*</exclude-pattern>
    <exclude-pattern>*/vendor/*</exclude-pattern>
    <exclude-pattern>*/public/index.php</exclude-pattern>

    <file>app</file>
    <file>database</file>
    <file>config</file>
    <file>public</file>
    <file>resources</file>
    <file>routes</file>
    <file>tests</file>

    <arg name="colors" />
    <arg value="spvn" />
    <ini name="memory_limit" value="512M" />


</ruleset>
