Subversion-Projekte lars-tiefland.php_share

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

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