[ Index ]
 

Code source de Serendipity 1.2

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/bundled-libs/Text/Wiki/Render/Xhtml/ -> Code.php (source)

   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($text, 0, -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  ?>


Généré le : Sat Nov 24 09:00:37 2007 par Balluche grâce à PHPXref 0.7
  Clicky Web Analytics