<?xml version="1.0" encoding="UTF-8"?>
<ruleset name="RSS-Bridge Ruleset">
  <description>
    Originally created with the PHP Coding Standard Generator.
    But later manually tweaked.
    http://edorian.github.com/php-coding-standard-generator/
  </description>

  <exclude-pattern>./static</exclude-pattern>
  <exclude-pattern>./vendor</exclude-pattern>
  <exclude-pattern>./lib/parsedown</exclude-pattern>
  <exclude-pattern>./lib/php-urljoin</exclude-pattern>
  <exclude-pattern>./lib/simplehtmldom</exclude-pattern>
  <exclude-pattern>./templates</exclude-pattern>
  <exclude-pattern>./config.default.ini.php</exclude-pattern>
  <exclude-pattern>./config.ini.php</exclude-pattern>

  <rule ref="PSR12">
    <exclude name="PSR1.Classes.ClassDeclaration.MissingNamespace"/>
    <exclude name="PSR1.Classes.ClassDeclaration.MultipleClasses"/>
    <exclude name="PSR1.Files.SideEffects.FoundWithSymbols"/>
    <exclude name="PSR2.Files.EndFileNewline"/>
    <exclude name="PSR12.Properties.ConstantVisibility.NotFound"/>
  </rule>

  <rule ref="Generic.Arrays.DisallowLongArraySyntax" />

  <rule ref="Squiz.WhiteSpace.FunctionOpeningBraceSpace" />

  <rule ref="Generic.Files.LineLength">
    <properties>
      <property name="lineLimit" value="180"/>
      <property name="absoluteLineLimit" value="180"/>
      <property name="ignoreComments" value="true"/>
    </properties>
  </rule>

  <rule ref="Generic.PHP.ForbiddenFunctions">
    <properties>
      <property name="forbiddenFunctions" type="array">
        <element key="sizeof" value="count"/>
      </property>
    </properties>
  </rule>

  <!-- Duplicate class names are not allowed -->
  <rule ref="Generic.Classes.DuplicateClassName"/>

  <!-- Unconditional if-statements are not allowed -->
  <rule ref="Generic.CodeAnalysis.UnconditionalIfStatement"/>
  <!-- Do not use final statements inside final classes -->
  <rule ref="Generic.CodeAnalysis.UnnecessaryFinalModifier"/>
  <!-- Do not override methods to call their parent -->
  <rule ref="Generic.CodeAnalysis.UselessOverridingMethod"/>
  <!-- Do not allow UTF-8 byte-order mark -->
  <rule ref="Generic.Files.ByteOrderMark"/>
  <!-- Make sure the concatenation operator has spaces around it -->
  <rule ref="Squiz.Strings.ConcatenationSpacing">
    <properties>
      <property name="spacing" value="1"/>
      <property name="ignoreNewlines" value="true"/>
    </properties>
  </rule>

  <!-- When calling a function: -->
  <!-- Do not add a space before the opening parenthesis -->
  <!-- Do not add a space after the opening parenthesis -->
  <!-- Do not add a space before the closing parenthesis -->
  <!-- Do not add a space before a comma -->
  <!-- Add a space after a comma -->
  <rule ref="Generic.Functions.FunctionCallArgumentSpacing"/>
  <!-- Use UPPERCARE for constants -->
  <rule ref="Generic.NamingConventions.UpperCaseConstantName"/>
  <!-- Use lowercase for 'true', 'false' and 'null' -->
  <rule ref="Generic.PHP.LowerCaseConstant"/>
  <!-- Use a single string instead of concating -->
  <rule ref="Generic.Strings.UnnecessaryStringConcat"/>

  <!-- Do not add spaces when casting -->
  <rule ref="Squiz.WhiteSpace.CastSpacing"/>
  <!-- Operators must have a space around them -->
  <rule ref="Squiz.WhiteSpace.OperatorSpacing"/>
  <!-- Do not add a whitespace before a semicolon -->
  <rule ref="Squiz.WhiteSpace.SemicolonSpacing"/>
  <!-- Do not add whitespace at start or end of a file or end of a line -->
  <rule ref="Squiz.WhiteSpace.SuperfluousWhitespace">
    <properties>
      <!--
      This fixes an issue in combination with PSR2
      https://github.com/squizlabs/PHP_CodeSniffer/issues/600
      -->
      <property name="ignoreBlankLines" value="false"/>
    </properties>
  </rule>

  <!-- Whenever possible use single quote strings -->
  <rule ref="Squiz.Strings.DoubleQuoteUsage">
    <exclude name="Squiz.Strings.DoubleQuoteUsage.ContainsVar" />
  </rule>
</ruleset>