Mercurial > hg > isophonics-drupal-site
comparison vendor/squizlabs/php_codesniffer/CodeSniffer/DocGenerators/Text.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 text-based documentation. | |
4 * | |
5 * PHP version 5 | |
6 * | |
7 * @category PHP | |
8 * @package PHP_CodeSniffer | |
9 * @author Greg Sherwood <gsherwood@squiz.net> | |
10 * @author Marc McIntyre <mmcintyre@squiz.net> | |
11 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600) | |
12 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence | |
13 * @link http://pear.php.net/package/PHP_CodeSniffer | |
14 */ | |
15 | |
16 if (class_exists('PHP_CodeSniffer_DocGenerators_Generator', true) === false) { | |
17 throw new PHP_CodeSniffer_Exception('Class PHP_CodeSniffer_DocGenerators_Generator not found'); | |
18 } | |
19 | |
20 /** | |
21 * A doc generator that outputs text-based documentation. | |
22 * | |
23 * Output is designed to be displayed in a terminal and is wrapped to 100 characters. | |
24 * | |
25 * @category PHP | |
26 * @package PHP_CodeSniffer | |
27 * @author Greg Sherwood <gsherwood@squiz.net> | |
28 * @author Marc McIntyre <mmcintyre@squiz.net> | |
29 * @copyright 2006-2014 Squiz Pty Ltd (ABN 77 084 670 600) | |
30 * @license https://github.com/squizlabs/PHP_CodeSniffer/blob/master/licence.txt BSD Licence | |
31 * @version Release: @package_version@ | |
32 * @link http://pear.php.net/package/PHP_CodeSniffer | |
33 */ | |
34 class PHP_CodeSniffer_DocGenerators_Text extends PHP_CodeSniffer_DocGenerators_Generator | |
35 { | |
36 | |
37 | |
38 /** | |
39 * Process the documentation for a single sniff. | |
40 * | |
41 * @param DOMNode $doc The DOMNode object for the sniff. | |
42 * It represents the "documentation" tag in the XML | |
43 * standard file. | |
44 * | |
45 * @return void | |
46 */ | |
47 public function processSniff(DOMNode $doc) | |
48 { | |
49 $this->printTitle($doc); | |
50 | |
51 foreach ($doc->childNodes as $node) { | |
52 if ($node->nodeName === 'standard') { | |
53 $this->printTextBlock($node); | |
54 } else if ($node->nodeName === 'code_comparison') { | |
55 $this->printCodeComparisonBlock($node); | |
56 } | |
57 } | |
58 | |
59 }//end processSniff() | |
60 | |
61 | |
62 /** | |
63 * Prints the title area for a single sniff. | |
64 * | |
65 * @param DOMNode $doc The DOMNode object for the sniff. | |
66 * It represents the "documentation" tag in the XML | |
67 * standard file. | |
68 * | |
69 * @return void | |
70 */ | |
71 protected function printTitle(DOMNode $doc) | |
72 { | |
73 $title = $this->getTitle($doc); | |
74 $standard = $this->getStandard(); | |
75 | |
76 echo PHP_EOL; | |
77 echo str_repeat('-', (strlen("$standard CODING STANDARD: $title") + 4)); | |
78 echo strtoupper(PHP_EOL."| $standard CODING STANDARD: $title |".PHP_EOL); | |
79 echo str_repeat('-', (strlen("$standard CODING STANDARD: $title") + 4)); | |
80 echo PHP_EOL.PHP_EOL; | |
81 | |
82 }//end printTitle() | |
83 | |
84 | |
85 /** | |
86 * Print a text block found in a standard. | |
87 * | |
88 * @param DOMNode $node The DOMNode object for the text block. | |
89 * | |
90 * @return void | |
91 */ | |
92 protected function printTextBlock($node) | |
93 { | |
94 $text = trim($node->nodeValue); | |
95 $text = str_replace('<em>', '*', $text); | |
96 $text = str_replace('</em>', '*', $text); | |
97 | |
98 $lines = array(); | |
99 $tempLine = ''; | |
100 $words = explode(' ', $text); | |
101 | |
102 foreach ($words as $word) { | |
103 if (strlen($tempLine.$word) >= 99) { | |
104 if (strlen($tempLine.$word) === 99) { | |
105 // Adding the extra space will push us to the edge | |
106 // so we are done. | |
107 $lines[] = $tempLine.$word; | |
108 $tempLine = ''; | |
109 } else if (strlen($tempLine.$word) === 100) { | |
110 // We are already at the edge, so we are done. | |
111 $lines[] = $tempLine.$word; | |
112 $tempLine = ''; | |
113 } else { | |
114 $lines[] = rtrim($tempLine); | |
115 $tempLine = $word.' '; | |
116 } | |
117 } else { | |
118 $tempLine .= $word.' '; | |
119 } | |
120 }//end foreach | |
121 | |
122 if ($tempLine !== '') { | |
123 $lines[] = rtrim($tempLine); | |
124 } | |
125 | |
126 echo implode(PHP_EOL, $lines).PHP_EOL.PHP_EOL; | |
127 | |
128 }//end printTextBlock() | |
129 | |
130 | |
131 /** | |
132 * Print a code comparison block found in a standard. | |
133 * | |
134 * @param DOMNode $node The DOMNode object for the code comparison block. | |
135 * | |
136 * @return void | |
137 */ | |
138 protected function printCodeComparisonBlock($node) | |
139 { | |
140 $codeBlocks = $node->getElementsByTagName('code'); | |
141 $first = trim($codeBlocks->item(0)->nodeValue); | |
142 $firstTitle = $codeBlocks->item(0)->getAttribute('title'); | |
143 | |
144 $firstTitleLines = array(); | |
145 $tempTitle = ''; | |
146 $words = explode(' ', $firstTitle); | |
147 | |
148 foreach ($words as $word) { | |
149 if (strlen($tempTitle.$word) >= 45) { | |
150 if (strlen($tempTitle.$word) === 45) { | |
151 // Adding the extra space will push us to the edge | |
152 // so we are done. | |
153 $firstTitleLines[] = $tempTitle.$word; | |
154 $tempTitle = ''; | |
155 } else if (strlen($tempTitle.$word) === 46) { | |
156 // We are already at the edge, so we are done. | |
157 $firstTitleLines[] = $tempTitle.$word; | |
158 $tempTitle = ''; | |
159 } else { | |
160 $firstTitleLines[] = $tempTitle; | |
161 $tempTitle = $word; | |
162 } | |
163 } else { | |
164 $tempTitle .= $word.' '; | |
165 } | |
166 }//end foreach | |
167 | |
168 if ($tempTitle !== '') { | |
169 $firstTitleLines[] = $tempTitle; | |
170 } | |
171 | |
172 $first = str_replace('<em>', '', $first); | |
173 $first = str_replace('</em>', '', $first); | |
174 $firstLines = explode("\n", $first); | |
175 | |
176 $second = trim($codeBlocks->item(1)->nodeValue); | |
177 $secondTitle = $codeBlocks->item(1)->getAttribute('title'); | |
178 | |
179 $secondTitleLines = array(); | |
180 $tempTitle = ''; | |
181 $words = explode(' ', $secondTitle); | |
182 | |
183 foreach ($words as $word) { | |
184 if (strlen($tempTitle.$word) >= 45) { | |
185 if (strlen($tempTitle.$word) === 45) { | |
186 // Adding the extra space will push us to the edge | |
187 // so we are done. | |
188 $secondTitleLines[] = $tempTitle.$word; | |
189 $tempTitle = ''; | |
190 } else if (strlen($tempTitle.$word) === 46) { | |
191 // We are already at the edge, so we are done. | |
192 $secondTitleLines[] = $tempTitle.$word; | |
193 $tempTitle = ''; | |
194 } else { | |
195 $secondTitleLines[] = $tempTitle; | |
196 $tempTitle = $word; | |
197 } | |
198 } else { | |
199 $tempTitle .= $word.' '; | |
200 } | |
201 }//end foreach | |
202 | |
203 if ($tempTitle !== '') { | |
204 $secondTitleLines[] = $tempTitle; | |
205 } | |
206 | |
207 $second = str_replace('<em>', '', $second); | |
208 $second = str_replace('</em>', '', $second); | |
209 $secondLines = explode("\n", $second); | |
210 | |
211 $maxCodeLines = max(count($firstLines), count($secondLines)); | |
212 $maxTitleLines = max(count($firstTitleLines), count($secondTitleLines)); | |
213 | |
214 echo str_repeat('-', 41); | |
215 echo ' CODE COMPARISON '; | |
216 echo str_repeat('-', 42).PHP_EOL; | |
217 | |
218 for ($i = 0; $i < $maxTitleLines; $i++) { | |
219 if (isset($firstTitleLines[$i]) === true) { | |
220 $firstLineText = $firstTitleLines[$i]; | |
221 } else { | |
222 $firstLineText = ''; | |
223 } | |
224 | |
225 if (isset($secondTitleLines[$i]) === true) { | |
226 $secondLineText = $secondTitleLines[$i]; | |
227 } else { | |
228 $secondLineText = ''; | |
229 } | |
230 | |
231 echo '| '; | |
232 echo $firstLineText.str_repeat(' ', (46 - strlen($firstLineText))); | |
233 echo ' | '; | |
234 echo $secondLineText.str_repeat(' ', (47 - strlen($secondLineText))); | |
235 echo ' |'.PHP_EOL; | |
236 }//end for | |
237 | |
238 echo str_repeat('-', 100).PHP_EOL; | |
239 | |
240 for ($i = 0; $i < $maxCodeLines; $i++) { | |
241 if (isset($firstLines[$i]) === true) { | |
242 $firstLineText = $firstLines[$i]; | |
243 } else { | |
244 $firstLineText = ''; | |
245 } | |
246 | |
247 if (isset($secondLines[$i]) === true) { | |
248 $secondLineText = $secondLines[$i]; | |
249 } else { | |
250 $secondLineText = ''; | |
251 } | |
252 | |
253 echo '| '; | |
254 echo $firstLineText.str_repeat(' ', (47 - strlen($firstLineText))); | |
255 echo '| '; | |
256 echo $secondLineText.str_repeat(' ', (48 - strlen($secondLineText))); | |
257 echo '|'.PHP_EOL; | |
258 }//end for | |
259 | |
260 echo str_repeat('-', 100).PHP_EOL.PHP_EOL; | |
261 | |
262 }//end printCodeComparisonBlock() | |
263 | |
264 | |
265 }//end class |