Overview

Packages

  • application
    • commands
    • components
      • actions
      • filters
      • leftWidget
      • permissions
      • sortableWidget
      • util
      • webupdater
      • x2flow
        • actions
        • triggers
      • X2GridView
      • X2Settings
    • controllers
    • models
      • embedded
    • modules
      • accounts
        • controllers
        • models
      • actions
        • controllers
        • models
      • calendar
        • controllers
        • models
      • charts
        • models
      • contacts
        • controllers
        • models
      • docs
        • components
        • controllers
        • models
      • groups
        • controllers
        • models
      • marketing
        • components
        • controllers
        • models
      • media
        • controllers
        • models
      • mobile
        • components
      • opportunities
        • controllers
        • models
      • products
        • controllers
        • models
      • quotes
        • controllers
        • models
      • services
        • controllers
        • models
      • template
        • models
      • users
        • controllers
        • models
      • workflow
        • controllers
        • models
      • x2Leads
        • controllers
        • models
  • Net
  • None
  • PHP
  • system
    • base
    • caching
      • dependencies
    • collections
    • console
    • db
      • ar
      • schema
        • cubrid
        • mssql
        • mysql
        • oci
        • pgsql
        • sqlite
    • i18n
      • gettext
    • logging
    • test
    • utils
    • validators
    • web
      • actions
      • auth
      • filters
      • form
      • helpers
      • renderers
      • services
      • widgets
        • captcha
        • pagers
  • Text
    • Highlighter
  • zii
    • behaviors
    • widgets
      • grid
      • jui

Classes

  • Text_Highlighter
  • Text_Highlighter_ABAP
  • Text_Highlighter_CPP
  • Text_Highlighter_CSS
  • Text_Highlighter_DIFF
  • Text_Highlighter_DTD
  • Text_Highlighter_Generator
  • Text_Highlighter_HTML
  • Text_Highlighter_JAVA
  • Text_Highlighter_JAVASCRIPT
  • Text_Highlighter_MYSQL
  • Text_Highlighter_PERL
  • Text_Highlighter_PHP
  • Text_Highlighter_PYTHON
  • Text_Highlighter_Renderer
  • Text_Highlighter_Renderer_Array
  • Text_Highlighter_Renderer_BB
  • Text_Highlighter_Renderer_Console
  • Text_Highlighter_Renderer_Html
  • Text_Highlighter_Renderer_HtmlTags
  • Text_Highlighter_Renderer_JSON
  • Text_Highlighter_Renderer_XML
  • Text_Highlighter_RUBY
  • Text_Highlighter_SH
  • Text_Highlighter_SQL
  • Text_Highlighter_VBSCRIPT
  • Text_Highlighter_XML
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
  3: /**
  4:  * BB code renderer.
  5:  *
  6:  * This BB renderer produces BB code, ready to be pasted in bulletin boards and
  7:  * other applications that accept BB code. Based on the HTML renderer by Andrey Demenev.
  8:  *
  9:  * LICENSE: This source file is subject to version 3.0 of the PHP license
 10:  * that is available through the world-wide-web at the following URI:
 11:  * http://www.php.net/license/3_0.txt.  If you did not receive a copy of
 12:  * the PHP License and are unable to obtain it through the web, please
 13:  * send a note to license@php.net so we can mail you a copy immediately.
 14:  *
 15:  * @category   Text
 16:  * @package    Text_Highlighter
 17:  * @author     Stoyan Stefanov <ssttoo@gmail.com>
 18:  * @copyright  2005 Stoyan Stefanov
 19:  * @license    http://www.php.net/license/3_0.txt  PHP License
 20:  * @version    CVS: $Id: BB.php,v 1.1 2007/06/03 02:37:08 ssttoo Exp $
 21:  * @link       http://pear.php.net/package/Text_Highlighter
 22:  */
 23: 
 24: /**
 25:  * @ignore
 26:  */
 27: 
 28: require_once dirname(__FILE__).'/../Renderer.php';
 29: 
 30: /**
 31:  * BB code renderer, based on Andrey Demenev's HTML renderer.
 32:  *
 33:  * Elements of $options argument of constructor (each being optional):
 34:  *
 35:  * - 'numbers' - Line numbering TRUE or FALSE
 36:  * - 'tabsize' - Tab size, default is 4
 37:  * - 'bb_tags' - An array containing three BB tags, see below
 38:  * - 'tag_brackets' - An array that conains opening and closing tags, [ and ]
 39:  * - 'colors' - An array with all the colors to be used for highlighting
 40:  *
 41:  * The default BB tags are:
 42:  * - 'color' => 'color'
 43:  * - 'list'  => 'list'
 44:  * - 'list_item' => '*'
 45:  *
 46:  * The default colors for the highlighter are:
 47:  * - 'default'    => 'Black',
 48:  * - 'code'       => 'Gray',
 49:  * - 'brackets'   => 'Olive',
 50:  * - 'comment'    => 'Orange',
 51:  * - 'mlcomment'  => 'Orange',
 52:  * - 'quotes'     => 'Darkred',
 53:  * - 'string'     => 'Red',
 54:  * - 'identifier' => 'Blue',
 55:  * - 'builtin'    => 'Teal',
 56:  * - 'reserved'   => 'Green',
 57:  * - 'inlinedoc'  => 'Blue',
 58:  * - 'var'        => 'Darkblue',
 59:  * - 'url'        => 'Blue',
 60:  * - 'special'    => 'Navy',
 61:  * - 'number'     => 'Maroon',
 62:  * - 'inlinetags' => 'Blue',
 63:  *
 64:  *
 65:  * @author     Stoyan Stefanov <ssttoo@gmail.com>
 66:  * @category   Text
 67:  * @package    Text_Highlighter
 68:  * @copyright  20045 Stoyan Stefanov
 69:  * @license    http://www.php.net/license/3_0.txt  PHP License
 70:  * @version    Release: 0.5.0
 71:  * @link       http://pear.php.net/package/Text_Highlighter
 72:  */
 73: 
 74: class Text_Highlighter_Renderer_BB extends Text_Highlighter_Renderer_Array
 75: {
 76: 
 77:     /**#@+
 78:      * @access private
 79:      */
 80: 
 81:     /**
 82:      * Line numbering - will use the specified BB tag for listings
 83:      *
 84:      * @var boolean
 85:      */
 86:     var $_numbers = false;
 87: 
 88:     /**
 89:      * BB tags to be used
 90:      *
 91:      * @var array
 92:      */
 93:     var $_bb_tags = array (
 94:         'color'     => 'color',
 95:         'list'      => 'list',
 96:         'list_item' => '*',
 97:         'code'      => 'code',
 98:     );
 99: 
100:     /**
101:      * BB brackets - [ and ]
102:      *
103:      * @var array
104:      */
105:     var $_tag_brackets = array ('start' => '[', 'end' => ']');
106: 
107:     /**
108:      * Colors map
109:      *
110:      * @var boolean
111:      */
112:     var $_colors = array(
113:         'default'    => 'Black',
114:         'code'       => 'Gray',
115:         'brackets'   => 'Olive',
116:         'comment'    => 'Orange',
117:         'mlcomment'  => 'Orange',
118:         'quotes'     => 'Darkred',
119:         'string'     => 'Red',
120:         'identifier' => 'Blue',
121:         'builtin'    => 'Teal',
122:         'reserved'   => 'Green',
123:         'inlinedoc'  => 'Blue',
124:         'var'        => 'Darkblue',
125:         'url'        => 'Blue',
126:         'special'    => 'Navy',
127:         'number'     => 'Maroon',
128:         'inlinetags' => 'Blue',
129:     );
130: 
131:     /**#@-*/
132: 
133:     /**
134:      * Resets renderer state
135:      *
136:      * @access protected
137:      *
138:      *
139:      * Descendents of Text_Highlighter call this method from the constructor,
140:      * passing $options they get as parameter.
141:      */
142:     function reset()
143:     {
144:         parent::reset();
145:         if (isset($this->_options['numbers'])) {
146:             $this->_numbers = $this->_options['numbers'];
147:         }
148:         if (isset($this->_options['bb_tags'])) {
149:             $this->_bb_tags = array_merge($this->_bb_tags, $this->_options['bb_tags']);
150:         }
151:         if (isset($this->_options['tag_brackets'])) {
152:             $this->_tag_brackets = array_merge($this->_tag_brackets, $this->_options['tag_brackets']);
153:         }
154:         if (isset($this->_options['colors'])) {
155:             $this->_colors = array_merge($this->_colors, $this->_options['colors']);
156:         }
157:     }
158: 
159: 
160:     /**
161:      * Signals that no more tokens are available
162:      *
163:      * @abstract
164:      * @access public
165:      *
166:      */
167:     function finalize()
168:     {
169: 
170:         // get parent's output
171:         parent::finalize();
172:         $output = parent::getOutput();
173: 
174:         $bb_output = '';
175: 
176:         $color_start = $this->_tag_brackets['start'] . $this->_bb_tags['color'] . '=%s'  . $this->_tag_brackets['end'];
177:         $color_end   = $this->_tag_brackets['start'] . '/' . $this->_bb_tags['color'] . $this->_tag_brackets['end'];
178: 
179:         // loop through each class=>content pair
180:         foreach ($output AS $token) {
181: 
182:             if ($this->_enumerated) {
183:                 $class = $token[0];
184:                 $content = $token[1];
185:             } else {
186:                 $key = key($token);
187:                 $class = $key;
188:                 $content = $token[$key];
189:             }
190: 
191:             $iswhitespace = ctype_space($content);
192:             if (!$iswhitespace && !empty($this->_colors[$class])) {
193:                 $bb_output .= sprintf($color_start, $this->_colors[$class]);
194:                 $bb_output .= $content;
195:                 $bb_output .= $color_end;
196:             } else {
197:                 $bb_output .= $content;
198:             }
199:         }
200: 
201:         if ($this->_numbers) {
202: 
203:             $item_tag = $this->_tag_brackets['start'] .
204:                         $this->_bb_tags['list_item'] .
205:                         $this->_tag_brackets['end'];
206:             $this->_output = $item_tag . str_replace("\n", "\n". $item_tag .' ', $bb_output);
207:             $this->_output = $this->_tag_brackets['start'] .
208:                              $this->_bb_tags['list'] .
209:                              $this->_tag_brackets['end'] .
210:                              $this->_output .
211:                              $this->_tag_brackets['start'] .
212:                              '/'.
213:                              $this->_bb_tags['list'] .
214:                              $this->_tag_brackets['end']
215:                              ;
216:         } else {
217:             $this->_output = $this->_tag_brackets['start'] .
218:                              $this->_bb_tags['code'] .
219:                              $this->_tag_brackets['end'] .
220:                              $bb_output .
221:                              $this->_tag_brackets['start'] .
222:                              '/' .
223:                              $this->_bb_tags['code'] .
224:                              $this->_tag_brackets['end'];
225:         }
226:     }
227: 
228: }
229: 
230: /*
231:  * Local variables:
232:  * tab-width: 4
233:  * c-basic-offset: 4
234:  * c-hanging-comment-ender-p: nil
235:  * End:
236:  */
237: 
238: ?>
API documentation generated by ApiGen 2.8.0