Mercurial > hg > isophonics-drupal-site
comparison vendor/squizlabs/php_codesniffer/CodeSniffer/DocGenerators/Markdown.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 /** | |
3 * A doc generator that outputs documentation in Markdown format. | |
4 * | |
5 * PHP version 5 | |
6 * | |
7 * @category PHP | |
8 * @package PHP_CodeSniffer | |
9 * @author Stefano Kowalke <blueduck@gmx.net> | |
10 * @copyright 2014 Arroba IT | |
11 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence | |
12 * @link http://pear.php.net/package/PHP_CodeSniffer | |
13 */ | |
14 | |
15 if (class_exists('PHP_CodeSniffer_DocGenerators_Generator', true) === false) { | |
16 throw new PHP_CodeSniffer_Exception('Class PHP_CodeSniffer_DocGenerators_Generator not found'); | |
17 } | |
18 | |
19 /** | |
20 * A doc generator that outputs documentation in Markdown format. | |
21 * | |
22 * @category PHP | |
23 * @package PHP_CodeSniffer | |
24 * @author Stefano Kowalke <blueduck@gmx.net> | |
25 * @copyright 2014 Arroba IT | |
26 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence | |
27 * @version Release: @package_version@ | |
28 * @link http://pear.php.net/package/PHP_CodeSniffer | |
29 */ | |
30 class PHP_CodeSniffer_DocGenerators_Markdown extends PHP_CodeSniffer_DocGenerators_Generator | |
31 { | |
32 | |
33 | |
34 /** | |
35 * Generates the documentation for a standard. | |
36 * | |
37 * @return void | |
38 * @see processSniff() | |
39 */ | |
40 public function generate() | |
41 { | |
42 ob_start(); | |
43 $this->printHeader(); | |
44 | |
45 $standardFiles = $this->getStandardFiles(); | |
46 | |
47 foreach ($standardFiles as $standard) { | |
48 $doc = new DOMDocument(); | |
49 $doc->load($standard); | |
50 $documentation = $doc->getElementsByTagName('documentation')->item(0); | |
51 $this->processSniff($documentation); | |
52 } | |
53 | |
54 $this->printFooter(); | |
55 $content = ob_get_contents(); | |
56 ob_end_clean(); | |
57 | |
58 echo $content; | |
59 | |
60 }//end generate() | |
61 | |
62 | |
63 /** | |
64 * Print the markdown header. | |
65 * | |
66 * @return void | |
67 */ | |
68 protected function printHeader() | |
69 { | |
70 $standard = $this->getStandard(); | |
71 | |
72 echo "# $standard Coding Standard".PHP_EOL; | |
73 | |
74 }//end printHeader() | |
75 | |
76 | |
77 /** | |
78 * Print the markdown footer. | |
79 * | |
80 * @return void | |
81 */ | |
82 protected function printFooter() | |
83 { | |
84 // Turn off errors so we don't get timezone warnings if people | |
85 // don't have their timezone set. | |
86 error_reporting(0); | |
87 echo 'Documentation generated on '.date('r'); | |
88 echo ' by [PHP_CodeSniffer '.PHP_CodeSniffer::VERSION.'](https://github.com/squizlabs/PHP_CodeSniffer)'; | |
89 | |
90 }//end printFooter() | |
91 | |
92 | |
93 /** | |
94 * Process the documentation for a single sniff. | |
95 * | |
96 * @param DOMNode $doc The DOMNode object for the sniff. | |
97 * It represents the "documentation" tag in the XML | |
98 * standard file. | |
99 * | |
100 * @return void | |
101 */ | |
102 protected function processSniff(DOMNode $doc) | |
103 { | |
104 $title = $this->getTitle($doc); | |
105 echo "## $title".PHP_EOL; | |
106 | |
107 foreach ($doc->childNodes as $node) { | |
108 if ($node->nodeName === 'standard') { | |
109 $this->printTextBlock($node); | |
110 } else if ($node->nodeName === 'code_comparison') { | |
111 $this->printCodeComparisonBlock($node); | |
112 } | |
113 } | |
114 | |
115 }//end processSniff() | |
116 | |
117 | |
118 /** | |
119 * Print a text block found in a standard. | |
120 * | |
121 * @param DOMNode $node The DOMNode object for the text block. | |
122 * | |
123 * @return void | |
124 */ | |
125 protected function printTextBlock(DOMNode $node) | |
126 { | |
127 $content = trim($node->nodeValue); | |
128 $content = htmlspecialchars($content); | |
129 | |
130 $content = str_replace('<em>', '*', $content); | |
131 $content = str_replace('</em>', '*', $content); | |
132 | |
133 echo $content.PHP_EOL; | |
134 | |
135 }//end printTextBlock() | |
136 | |
137 | |
138 /** | |
139 * Print a code comparison block found in a standard. | |
140 * | |
141 * @param DOMNode $node The DOMNode object for the code comparison block. | |
142 * | |
143 * @return void | |
144 */ | |
145 protected function printCodeComparisonBlock(DOMNode $node) | |
146 { | |
147 $codeBlocks = $node->getElementsByTagName('code'); | |
148 | |
149 $firstTitle = $codeBlocks->item(0)->getAttribute('title'); | |
150 $first = trim($codeBlocks->item(0)->nodeValue); | |
151 $first = str_replace("\n", "\n ", $first); | |
152 $first = str_replace('<em>', '', $first); | |
153 $first = str_replace('</em>', '', $first); | |
154 | |
155 $secondTitle = $codeBlocks->item(1)->getAttribute('title'); | |
156 $second = trim($codeBlocks->item(1)->nodeValue); | |
157 $second = str_replace("\n", "\n ", $second); | |
158 $second = str_replace('<em>', '', $second); | |
159 $second = str_replace('</em>', '', $second); | |
160 | |
161 echo ' <table>'.PHP_EOL; | |
162 echo ' <tr>'.PHP_EOL; | |
163 echo " <th>$firstTitle</th>".PHP_EOL; | |
164 echo " <th>$secondTitle</th>".PHP_EOL; | |
165 echo ' </tr>'.PHP_EOL; | |
166 echo ' <tr>'.PHP_EOL; | |
167 echo '<td>'.PHP_EOL.PHP_EOL; | |
168 echo " $first".PHP_EOL.PHP_EOL; | |
169 echo '</td>'.PHP_EOL; | |
170 echo '<td>'.PHP_EOL.PHP_EOL; | |
171 echo " $second".PHP_EOL.PHP_EOL; | |
172 echo '</td>'.PHP_EOL; | |
173 echo ' </tr>'.PHP_EOL; | |
174 echo ' </table>'.PHP_EOL; | |
175 | |
176 }//end printCodeComparisonBlock() | |
177 | |
178 | |
179 }//end class |