Page Menu
Home
WickedGov Phorge
Search
Configure Global Search
Log In
Files
F5977994
Markdown.php
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
Markdown.php
View Options
<?php
/**
* A doc generator that outputs documentation in Markdown format.
*
* @author Stefano Kowalke <blueduck@gmx.net>
* @copyright 2014 Arroba IT
* @license https://github.com/PHPCSStandards/PHP_CodeSniffer/blob/master/licence.txt BSD Licence
*/
namespace
PHP_CodeSniffer\Generators
;
use
DOMDocument
;
use
DOMNode
;
use
PHP_CodeSniffer\Config
;
class
Markdown
extends
Generator
{
/**
* Generates the documentation for a standard.
*
* @return void
* @see processSniff()
*/
public
function
generate
()
{
ob_start
();
$this
->
printHeader
();
foreach
(
$this
->
docFiles
as
$file
)
{
$doc
=
new
DOMDocument
();
$doc
->
load
(
$file
);
$documentation
=
$doc
->
getElementsByTagName
(
'documentation'
)->
item
(
0
);
$this
->
processSniff
(
$documentation
);
}
$this
->
printFooter
();
$content
=
ob_get_contents
();
ob_end_clean
();
echo
$content
;
}
//end generate()
/**
* Print the markdown header.
*
* @return void
*/
protected
function
printHeader
()
{
$standard
=
$this
->
ruleset
->
name
;
echo
"# $standard Coding Standard"
.
PHP_EOL
;
}
//end printHeader()
/**
* Print the markdown footer.
*
* @return void
*/
protected
function
printFooter
()
{
// Turn off errors so we don't get timezone warnings if people
// don't have their timezone set.
error_reporting
(
0
);
echo
'Documentation generated on '
.
date
(
'r'
);
echo
' by [PHP_CodeSniffer '
.
Config
::
VERSION
.
'](https://github.com/PHPCSStandards/PHP_CodeSniffer)'
.
PHP_EOL
;
}
//end printFooter()
/**
* Process the documentation for a single sniff.
*
* @param \DOMNode $doc The DOMNode object for the sniff.
* It represents the "documentation" tag in the XML
* standard file.
*
* @return void
*/
protected
function
processSniff
(
DOMNode
$doc
)
{
$title
=
$this
->
getTitle
(
$doc
);
echo
PHP_EOL
.
"## $title"
.
PHP_EOL
;
foreach
(
$doc
->
childNodes
as
$node
)
{
if
(
$node
->
nodeName
===
'standard'
)
{
$this
->
printTextBlock
(
$node
);
}
else
if
(
$node
->
nodeName
===
'code_comparison'
)
{
$this
->
printCodeComparisonBlock
(
$node
);
}
}
}
//end processSniff()
/**
* Print a text block found in a standard.
*
* @param \DOMNode $node The DOMNode object for the text block.
*
* @return void
*/
protected
function
printTextBlock
(
DOMNode
$node
)
{
$content
=
trim
(
$node
->
nodeValue
);
$content
=
htmlspecialchars
(
$content
);
$content
=
str_replace
(
'<em>'
,
'*'
,
$content
);
$content
=
str_replace
(
'</em>'
,
'*'
,
$content
);
echo
$content
.
PHP_EOL
;
}
//end printTextBlock()
/**
* Print a code comparison block found in a standard.
*
* @param \DOMNode $node The DOMNode object for the code comparison block.
*
* @return void
*/
protected
function
printCodeComparisonBlock
(
DOMNode
$node
)
{
$codeBlocks
=
$node
->
getElementsByTagName
(
'code'
);
$firstTitle
=
$codeBlocks
->
item
(
0
)->
getAttribute
(
'title'
);
$first
=
trim
(
$codeBlocks
->
item
(
0
)->
nodeValue
);
$first
=
str_replace
(
"
\n
"
,
"
\n
"
,
$first
);
$first
=
str_replace
(
'<em>'
,
''
,
$first
);
$first
=
str_replace
(
'</em>'
,
''
,
$first
);
$secondTitle
=
$codeBlocks
->
item
(
1
)->
getAttribute
(
'title'
);
$second
=
trim
(
$codeBlocks
->
item
(
1
)->
nodeValue
);
$second
=
str_replace
(
"
\n
"
,
"
\n
"
,
$second
);
$second
=
str_replace
(
'<em>'
,
''
,
$second
);
$second
=
str_replace
(
'</em>'
,
''
,
$second
);
echo
' <table>'
.
PHP_EOL
;
echo
' <tr>'
.
PHP_EOL
;
echo
" <th>$firstTitle</th>"
.
PHP_EOL
;
echo
" <th>$secondTitle</th>"
.
PHP_EOL
;
echo
' </tr>'
.
PHP_EOL
;
echo
' <tr>'
.
PHP_EOL
;
echo
'<td>'
.
PHP_EOL
.
PHP_EOL
;
echo
" $first"
.
PHP_EOL
.
PHP_EOL
;
echo
'</td>'
.
PHP_EOL
;
echo
'<td>'
.
PHP_EOL
.
PHP_EOL
;
echo
" $second"
.
PHP_EOL
.
PHP_EOL
;
echo
'</td>'
.
PHP_EOL
;
echo
' </tr>'
.
PHP_EOL
;
echo
' </table>'
.
PHP_EOL
;
}
//end printCodeComparisonBlock()
}
//end class
File Metadata
Details
Attached
Mime Type
text/x-php
Expires
Sat, Oct 3, 20:12 (3 d, 11 h ago)
Storage Engine
local-disk
Storage Format
Raw Data
Storage Handle
27/57/21138beee63acb6f0cc28bc66054
Default Alt Text
Markdown.php (4 KB)
Attached To
Mode
rMWPROD MediaWiki Production
Attached
Detach File
Event Timeline
Log In to Comment