[ Index ]
 

Code source de Serendipity 1.2

Accédez au Source d'autres logiciels libres

title

Body

[fermer]

/bundled-libs/Text/Wiki/Parse/Default/ -> Revise.php (source)

   1  <?php
   2  // $Id: Revise.php,v 1.1 2005/01/31 15:46:52 pmjones Exp $
   3  
   4  
   5  /**
   6  * 
   7  * This class implements a Text_Wiki_Parse to find source text marked for
   8  * revision.
   9  *
  10  * @author Paul M. Jones <pmjones@ciaweb.net>
  11  *
  12  * @package Text_Wiki
  13  *
  14  */
  15  
  16  class Text_Wiki_Parse_Revise extends Text_Wiki_Parse {
  17      
  18      
  19      /**
  20      * 
  21      * The regular expression used to parse the source text and find
  22      * matches conforming to this rule.  Used by the parse() method.
  23      * 
  24      * @access public
  25      * 
  26      * @var string
  27      * 
  28      * @see parse()
  29      * 
  30      */
  31      
  32      var $regex = "/\@\@({*?.*}*?)\@\@/U";
  33      
  34      
  35      /**
  36      * 
  37      * Config options.
  38      * 
  39      * @access public
  40      * 
  41      * @var array
  42      *
  43      */
  44      
  45      var $conf = array(
  46          'delmark' => '---',
  47          'insmark' => '+++'
  48      );
  49      
  50      
  51      /**
  52      * 
  53      * Generates a replacement for the matched text.  Token options are:
  54      * 
  55      * 'type' => ['start'|'end'] The starting or ending point of the
  56      * inserted text.  The text itself is left in the source.
  57      * 
  58      * @access public
  59      *
  60      * @param array &$matches The array of matches from parse().
  61      *
  62      * @return string A pair of delimited tokens to be used as a
  63      * placeholder in the source text surrounding the teletype text.
  64      *
  65      */
  66      
  67      function process(&$matches)
  68      {
  69          $output = '';
  70          $src = $matches[1];
  71          $delmark = $this->getConf('delmark'); // ---
  72          $insmark = $this->getConf('insmark'); // +++
  73          
  74          // '---' must be before '+++' (if they both appear)
  75          $del = strpos($src, $delmark);
  76          $ins = strpos($src, $insmark);
  77          
  78          // if neither is found, return right away
  79          if ($del === false && $ins === false) {
  80              return $matches[0];
  81          }
  82          
  83          // handle text to be deleted
  84          if ($del !== false) {
  85              
  86              // move forward to the end of the deletion mark
  87              $del += strlen($delmark);
  88              
  89              if ($ins === false) {
  90                  // there is no insertion text following
  91                  $text = substr($src, $del);
  92              } else {
  93                  // there is insertion text following,
  94                  // mitigate the length
  95                  $text = substr($src, $del, $ins - $del);
  96              }
  97              
  98              $output .= $this->wiki->addToken(
  99                  $this->rule, array('type' => 'del_start')
 100              );
 101              
 102              $output .= $text;
 103              
 104              $output .= $this->wiki->addToken(
 105                  $this->rule, array('type' => 'del_end')
 106              );
 107          }
 108          
 109          // handle text to be inserted
 110          if ($ins !== false) {
 111              
 112              // move forward to the end of the insert mark
 113              $ins += strlen($insmark);
 114              $text = substr($src, $ins);
 115              
 116              $output .= $this->wiki->addToken(
 117                  $this->rule, array('type' => 'ins_start')
 118              );
 119              
 120              $output .= $text;
 121              
 122              $output .= $this->wiki->addToken(
 123                  $this->rule, array('type' => 'ins_end')
 124              );
 125          }
 126          
 127          return $output;
 128      }
 129  }
 130  ?>


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