/**
* Moodle Coding Standard.
*
- * @category PHP
- * @package PHP_CodeSniffer
- * @author Nicolas Connault <nicolasconnault@gmail.com>
- * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
- * @version Release: @package_version@
- * @link http://pear.php.net/package/PHP_CodeSniffer
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ * @version Release: @package_version@
*/
class php_codesniffer_standards_moodle_moodlecodingstandard extends php_codesniffer_standards_codingstandard {
/**
* @copyright 2009 Nicolas Connault
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
-class moodle_sniffs_classes_classdeclarationsniff implements php_codesniffer_sniff
-{
+class moodle_sniffs_classes_classdeclarationsniff implements php_codesniffer_sniff {
/**
*
* @return array
*/
- public function register()
- {
- return array(
- T_CLASS,
- T_INTERFACE,
- );
-
+ public function register() {
+ return array(T_CLASS, T_INTERFACE);
}
*
* @return void
*/
- public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr)
- {
+ public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) {
$tokens = $phpcsfile->gettokens();
if (isset($tokens[$stackptr]['scope_opener']) === false) {
return;
}
- $curlyBrace = $tokens[$stackptr]['scope_opener'];
- $lastcontent = $phpcsfile->findPrevious(T_WHITESPACE, ($curlyBrace - 1), $stackptr, true);
+ $curlybrace = $tokens[$stackptr]['scope_opener'];
+ $lastcontent = $phpcsfile->findPrevious(T_WHITESPACE, ($curlybrace - 1), $stackptr, true);
$classline = $tokens[$lastcontent]['line'];
- $braceline = $tokens[$curlyBrace]['line'];
+ $braceline = $tokens[$curlybrace]['line'];
+
if ($braceline != $classline) {
$error = 'Opening brace of a ';
$error .= $tokens[$stackptr]['content'];
$error .= ' must be on the same line as the definition';
- $phpcsfile->adderror($error, $curlyBrace);
+ $phpcsfile->adderror($error, $curlybrace);
return;
}
- if ($tokens[($curlyBrace - 1)]['code'] === T_WHITESPACE) {
- $prevcontent = $tokens[($curlyBrace - 1)]['content'];
+ if ($tokens[($curlybrace - 1)]['code'] === T_WHITESPACE) {
+ $prevcontent = $tokens[($curlybrace - 1)]['content'];
+
if ($prevcontent !== $phpcsfile->eolChar) {
- $blankSpace = substr($prevcontent, strpos($prevcontent, $phpcsfile->eolChar));
- $spaces = strlen($blankSpace);
+ $blankspace = substr($prevcontent, strpos($prevcontent, $phpcsfile->eolChar));
+ $spaces = strlen($blankspace);
+
if ($spaces !== 1) {
$error = "Expected 1 space before opening brace; $spaces found";
- $phpcsfile->adderror($error, $curlyBrace);
+ $phpcsfile->adderror($error, $curlybrace);
}
}
}
-
}
-
-
}
-
-?>
--- /dev/null
+<?php
+
+// This file is part of Moodle - http://moodle.org/
+//
+// Moodle is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Moodle is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
+/**
+ * moodle_sniffs_whitespace_controlstructureblanklinesniff
+ *
+ * @package lib-pear-php-codesniffer-standards-moodle-sniffs-whitespace
+ * @copyright 2008 Nicolas Connault
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+
+/**
+ * moodle_sniffs_controlstructureblanklinesniff
+ *
+ * Checks that there is a blank line before control structures
+ *
+ * @copyright 2008 Nicolas Connault
+ * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
+ */
+class moodle_sniffs_whitespace_controlstructureblanklinesniff implements php_codesniffer_sniff {
+
+
+ /**
+ * Returns an array of tokens this test wants to listen for.
+ *
+ * @return array
+ */
+ public function register() {
+ return array(T_IF, T_FOR, T_FOREACH, T_WHILE, T_SWITCH);
+ }
+
+
+ /**
+ * Processes this test, when one of its tokens is encountered.
+ *
+ * @param PHP_CodeSniffer_File $phpcsfile All the tokens found in the document.
+ * @param int $stackptr The position of the current token in the
+ * stack passed in $tokens.
+ *
+ * @return void
+ */
+ public function process(PHP_CodeSniffer_File $phpcsfile, $stackptr) {
+ $tokens = $phpcsfile->gettokens();
+ $previoustoken = $stackptr - 1;
+
+ while ($tokens[$previoustoken]['line'] == $tokens[$stackptr]['line']) {
+ $previoustoken = $phpcsfile->findprevious(T_WHITESPACE, ($previoustoken - 1), null, true);
+ }
+
+ $previous_non_ws_token = $tokens[$previoustoken];
+
+ if ($previous_non_ws_token['line'] == ($tokens[$stackptr]['line'] - 1)) {
+ $phpcsfile->addWarning('You should add a blank line before control structures', $stackptr);
+ }
+ }
+}