1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
|
<?PHP
/**
* XML/Beautifier.php
*
* Format XML files containing unknown entities (like all of peardoc)
*
* phpDocumentor :: automatic documentation generator
*
* PHP versions 4 and 5
*
* Copyright (c) 2004-2006 Gregory Beaver
*
* LICENSE:
*
* This library is free software; you can redistribute it
* and/or modify it under the terms of the GNU Lesser General
* Public License as published by the Free Software Foundation;
* either version 2.1 of the License, or (at your option) any
* later version.
*
* This library 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* @package phpDocumentor
* @subpackage Parsers
* @author Greg Beaver <cellog@php.net>
* @copyright 2004-2006 Gregory Beaver
* @license http://www.opensource.org/licenses/lgpl-license.php LGPL
* @version CVS: $Id$
* @filesource
* @link http://www.phpdoc.org
* @link http://pear.php.net/PhpDocumentor
* @since 1.3.0
*/
/**
* This is just like XML_Beautifier, but uses {@link phpDocumentor_XML_Beautifier_Tokenizer}
* @package phpDocumentor
* @subpackage Parsers
* @since 1.3.0
*/
class phpDocumentor_peardoc2_XML_Beautifier extends XML_Beautifier {
/**
* format a file or URL
*
* @access public
* @param string $file filename
* @param mixed $newFile filename for beautified XML file (if none is given, the XML string will be returned.)
* if you want overwrite the original file, use XML_BEAUTIFIER_OVERWRITE
* @param string $renderer Renderer to use, default is the plain xml renderer
* @return mixed XML string of no file should be written, true if file could be written
* @throws PEAR_Error
* @uses _loadRenderer() to load the desired renderer
*/
function formatFile($file, $newFile = null, $renderer = "Plain")
{
if ($this->apiVersion() != '1.0') {
return $this->raiseError('API version must be 1.0');
}
/**
* Split the document into tokens
* using the XML_Tokenizer
*/
require_once dirname(__FILE__) . '/Tokenizer.php';
$tokenizer = new phpDocumentor_XML_Beautifier_Tokenizer();
$tokens = $tokenizer->tokenize( $file, true );
if (PEAR::isError($tokens)) {
return $tokens;
}
include_once dirname(__FILE__) . '/Plain.php';
$renderer = new PHPDoc_XML_Beautifier_Renderer_Plain($this->_options);
$xml = $renderer->serialize($tokens);
if ($newFile == null) {
return $xml;
}
$fp = @fopen($newFile, "w");
if (!$fp) {
return PEAR::raiseError("Could not write to output file", XML_BEAUTIFIER_ERROR_NO_OUTPUT_FILE);
}
flock($fp, LOCK_EX);
fwrite($fp, $xml);
flock($fp, LOCK_UN);
fclose($fp);
return true; }
/**
* format an XML string
*
* @access public
* @param string $string XML
* @return string formatted XML string
* @throws PEAR_Error
*/
function formatString($string, $renderer = "Plain")
{
if ($this->apiVersion() != '1.0') {
return $this->raiseError('API version must be 1.0');
}
/**
* Split the document into tokens
* using the XML_Tokenizer
*/
require_once dirname(__FILE__) . '/Tokenizer.php';
$tokenizer = new phpDocumentor_XML_Beautifier_Tokenizer();
$tokens = $tokenizer->tokenize( $string, false );
if (PEAR::isError($tokens)) {
return $tokens;
}
include_once dirname(__FILE__) . '/Plain.php';
$renderer = new PHPDoc_XML_Beautifier_Renderer_Plain($this->_options);
$xml = $renderer->serialize($tokens);
return $xml;
}
}
?>
|