Text_Wiki
[ class tree: Text_Wiki ] [ index: Text_Wiki ] [ all elements ]

Source for file Code.php

Documentation is available at Code.php

  1. <?php
  2.  
  3. class Text_Wiki_Render_Xhtml_Code extends Text_Wiki_Render {
  4.     
  5.     var $conf = array(
  6.         'css'      => null// class for <pre>
  7.         'css_code' => null// class for generic <code>
  8.         'css_php'  => null// class for PHP <code>
  9.         'css_html' => null // class for HTML <code>
  10.     );
  11.     
  12.     /**
  13.     * 
  14.     * Renders a token into text matching the requested format.
  15.     * 
  16.     * @access public
  17.     * 
  18.     * @param array $options The "options" portion of the token (second
  19.     *  element).
  20.     * 
  21.     * @return string The text rendered from the token options.
  22.     * 
  23.     */
  24.     
  25.     function token($options)
  26.     {
  27.         $text $options['text'];
  28.         $attr $options['attr'];
  29.            $type strtolower($attr['type']);
  30.         
  31.         $css      $this->formatConf(' class="%s"''css');
  32.         $css_code $this->formatConf(' class="%s"''css_code');
  33.         $css_php  $this->formatConf(' class="%s"''css_php');
  34.         $css_html $this->formatConf(' class="%s"''css_html');
  35.         
  36.         if ($type == 'php'{
  37.             
  38.             // PHP code example:
  39.             // add the PHP tags
  40.             $text "<?php\n" $options['text'"\n?>"// <?php
  41.             
  42.             // convert tabs to four spaces
  43.             $text str_replace("\t""    "$text);
  44.             
  45.             // colorize the code block (also converts HTML entities and adds
  46.             // <code>...</code> tags)
  47.             ob_start();
  48.             highlight_string($text);
  49.             $text ob_get_contents();
  50.             ob_end_clean();
  51.             
  52.             // replace <br /> tags with simple newlines.
  53.             // replace non-breaking space with simple spaces.
  54.             // translate HTML <font> and color to XHTML <span> and style.
  55.             // courtesy of research by A. Kalin :-).
  56.             $map = array(
  57.                 '<br />'  => "\n",
  58.                 '&nbsp;'  => ' ',
  59.                 '<font'   => '<span',
  60.                 '</font>' => '</span>',
  61.                 'color="' => 'style="color:'
  62.             );
  63.             $text strtr($text$map);
  64.            
  65.             // get rid of the last newline inside the code block
  66.             // (becuase higlight_string puts one there)
  67.             if (substr($text-8== "\n</code>"{
  68.                 $text substr($text0-8"</code>";
  69.             }
  70.             
  71.             // replace all <code> tags with classed tags
  72.             if ($css_php{
  73.                 $text str_replace('<code>'"<code$css_php>"$text);
  74.             }
  75.             
  76.             // done
  77.             $text = "<pre$css>$text</pre>";
  78.         
  79.         elseif ($type == 'html' || $type == 'xhtml'{
  80.         
  81.             // HTML code example:
  82.             // add <html> opening and closing tags,
  83.             // convert tabs to four spaces,
  84.             // convert entities.
  85.             $text str_replace("\t""    "$text);
  86.             $text = "<html>\n$text\n</html>";
  87.             $text htmlentities($text);
  88.             $text = "<pre$css><code$css_html>$text</code></pre>";
  89.             
  90.         else {
  91.             // generic code example:
  92.             // convert tabs to four spaces,
  93.             // convert entities.
  94.             $text str_replace("\t""    "$text);
  95.             $text htmlentities($text);
  96.             $text = "<pre$css><code$css_code>$text</code></pre>";
  97.         }
  98.         
  99.         return "\n$text\n\n";
  100.     }
  101. }
  102. ?>

Documentation generated on Mon, 11 Mar 2019 13:56:08 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.