1: <?php
2: /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
3: /**
4: * JSON 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: JSON.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: * JSON 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_JSON extends Text_Highlighter_Renderer_Array
43: {
44:
45: /**
46: * Signals that no more tokens are available
47: *
48: * @abstract
49: * @access public
50: */
51: function finalize()
52: {
53:
54: parent::finalize();
55: $output = parent::getOutput();
56:
57: $json_array = array();
58:
59: foreach ($output AS $token) {
60:
61: if ($this->_enumerated) {
62: $json_array[] = '["' . $token[0] . '","' . $token[1] . '"]';
63: } else {
64: $key = key($token);
65: $json_array[] = '{"class": "' . $key . '","content":"' . $token[$key] . '"}';
66: }
67:
68: }
69:
70: $this->_output = '['. implode(',', $json_array) .']';
71: $this->_output = str_replace("\n", '\n', $this->_output);
72:
73: }
74:
75:
76: }
77:
78: /*
79: * Local variables:
80: * tab-width: 4
81: * c-basic-offset: 4
82: * c-hanging-comment-ender-p: nil
83: * End:
84: */
85:
86: ?>