diff vendor/squizlabs/php_codesniffer/src/Generators/Generator.php @ 4:a9cd425dd02b

Update, including to Drupal core 8.6.10
author Chris Cannam
date Thu, 28 Feb 2019 13:11:55 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/vendor/squizlabs/php_codesniffer/src/Generators/Generator.php	Thu Feb 28 13:11:55 2019 +0000
@@ -0,0 +1,117 @@
+<?php
+/**
+ * The base class for all PHP_CodeSniffer documentation generators.
+ *
+ * Documentation generators are used to print documentation about code sniffs
+ * in a standard.
+ *
+ * @author    Greg Sherwood <gsherwood@squiz.net>
+ * @copyright 2006-2015 Squiz Pty Ltd (ABN 77 084 670 600)
+ * @license   https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
+ */
+
+namespace PHP_CodeSniffer\Generators;
+
+use PHP_CodeSniffer\Ruleset;
+use PHP_CodeSniffer\Autoload;
+
+abstract class Generator
+{
+
+    /**
+     * The ruleset used for the run.
+     *
+     * @var \PHP_CodeSniffer\Ruleset
+     */
+    public $ruleset = null;
+
+    /**
+     * XML documentation files used to produce the final output.
+     *
+     * @var string[]
+     */
+    public $docFiles = [];
+
+
+    /**
+     * Constructs a doc generator.
+     *
+     * @param \PHP_CodeSniffer\Ruleset $ruleset The ruleset used for the run.
+     *
+     * @see generate()
+     */
+    public function __construct(Ruleset $ruleset)
+    {
+        $this->ruleset = $ruleset;
+
+        foreach ($ruleset->sniffs as $className => $sniffClass) {
+            $file    = Autoload::getLoadedFileName($className);
+            $docFile = str_replace(
+                DIRECTORY_SEPARATOR.'Sniffs'.DIRECTORY_SEPARATOR,
+                DIRECTORY_SEPARATOR.'Docs'.DIRECTORY_SEPARATOR,
+                $file
+            );
+            $docFile = str_replace('Sniff.php', 'Standard.xml', $docFile);
+
+            if (is_file($docFile) === true) {
+                $this->docFiles[] = $docFile;
+            }
+        }
+
+    }//end __construct()
+
+
+    /**
+     * Retrieves the title of the sniff from the DOMNode supplied.
+     *
+     * @param \DOMNode $doc The DOMNode object for the sniff.
+     *                      It represents the "documentation" tag in the XML
+     *                      standard file.
+     *
+     * @return string
+     */
+    protected function getTitle(\DOMNode $doc)
+    {
+        return $doc->getAttribute('title');
+
+    }//end getTitle()
+
+
+    /**
+     * Generates the documentation for a standard.
+     *
+     * It's probably wise for doc generators to override this method so they
+     * have control over how the docs are produced. Otherwise, the processSniff
+     * method should be overridden to output content for each sniff.
+     *
+     * @return void
+     * @see    processSniff()
+     */
+    public function generate()
+    {
+        foreach ($this->docFiles as $file) {
+            $doc = new \DOMDocument();
+            $doc->load($file);
+            $documentation = $doc->getElementsByTagName('documentation')->item(0);
+            $this->processSniff($documentation);
+        }
+
+    }//end generate()
+
+
+    /**
+     * Process the documentation for a single sniff.
+     *
+     * Doc generators must implement this function to produce output.
+     *
+     * @param \DOMNode $doc The DOMNode object for the sniff.
+     *                      It represents the "documentation" tag in the XML
+     *                      standard file.
+     *
+     * @return void
+     * @see    generate()
+     */
+    abstract protected function processSniff(\DOMNode $doc);
+
+
+}//end class