1: <?php
2: /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3: /**
4: * XML renderer.
5: *
6: * Based on the HTML renderer by Andrey Demenev.
7: *
8: * LICENSE: This source file is subject to version 3.0 of the PHP license
9: * that is available through the world-wide-web at the following URI:
10: * http://www.php.net/license/3_0.txt. If you did not receive a copy of
11: * the PHP License and are unable to obtain it through the web, please
12: * send a note to license@php.net so we can mail you a copy immediately.
13: *
14: * @category Text
15: * @package Text_Highlighter
16: * @author Stoyan Stefanov <ssttoo@gmail.com>
17: * @copyright 2006 Stoyan Stefanov
18: * @license http://www.php.net/license/3_0.txt PHP License
19: * @version CVS: $Id: XML.php,v 1.1 2007/06/03 02:37:09 ssttoo Exp $
20: * @link http://pear.php.net/package/Text_Highlighter
21: */
22:
23: /**
24: * @ignore
25: */
26:
27: require_once dirname(__FILE__).'/../Renderer.php';
28: require_once dirname(__FILE__).'/../Renderer/Array.php';
29:
30: /**
31: * XML renderer, based on Andrey Demenev's HTML renderer.
32: *
33: * @author Stoyan Stefanov <ssttoo@gmail.com>
34: * @category Text
35: * @package Text_Highlighter
36: * @copyright 2006 Stoyan Stefanov
37: * @license http://www.php.net/license/3_0.txt PHP License
38: * @version Release: 0.5.0
39: * @link http://pear.php.net/package/Text_Highlighter
40: */
41:
42: class Text_Highlighter_Renderer_XML extends Text_Highlighter_Renderer_Array
43: {
44:
45:
46: /**
47: * Options for XML_Serializer
48: *
49: * @access private
50: * @var array
51: */
52: var $_serializer_options = array();
53:
54:
55: /**
56: * Resets renderer state
57: *
58: * Descendents of Text_Highlighter call this method from the constructor,
59: * passing $options they get as parameter.
60: *
61: * @access protected
62: */
63: function reset()
64: {
65: parent::reset();
66: if (isset($this->_options['xml_serializer'])) {
67: $this->_serializer_options = $this->_options['xml_serializer'];
68: }
69: }
70:
71:
72: /**
73: * Signals that no more tokens are available
74: *
75: * @abstract
76: * @access public
77: */
78: function finalize()
79: {
80:
81: // call parent's finalize(), then serialize array into XML
82: parent::finalize();
83: $output = parent::getOutput();
84:
85: $serializer = new XML_Serializer($this->_serializer_options);
86: $result = $serializer->serialize($output);
87: if ($result === true) {
88: $this->_output = $serializer->getSerializedData();
89: }
90: }
91:
92:
93: }
94:
95: /*
96: * Local variables:
97: * tab-width: 4
98: * c-basic-offset: 4
99: * c-hanging-comment-ender-p: nil
100: * End:
101: */
102:
103: ?>