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

Source for file Regex.php

Documentation is available at Regex.php

  1. <?php
  2.  
  3. class HTML_Template_Flexy_Compiler_Regex {
  4.         
  5.     /**
  6.     * The main flexy engine
  7.     *
  8.     * @var object HTML_Template_Flexy 
  9.     * @access public
  10.     */
  11.     
  12.     var $flexy;
  13.     /**
  14.     *   classicParse - the older regex based code generator.
  15.     *   here all the replacing, filtering and writing of the compiled file is done
  16.     *   well this is not much work, but still its in here :-)
  17.     *
  18.     *   @access     private
  19.     *   @version    01/12/03
  20.     *   @author     Wolfram Kriesing <wolfram@kriesing.de>
  21.     *   @author     Alan Knowles <alan@akbkhome.com>
  22.     *   @return   boolean (basically true all the time here)
  23.     */
  24.     function compile(&$flexy)
  25.     {
  26.         $this->flexy &$flexy;
  27.         // read the entire file into one variable
  28.         $fileContent file_get_contents($flexy->currentTemplate);
  29.          
  30.         //  apply pre filter
  31.         $fileContent $this->applyFilters$fileContent "/^pre_/i" );
  32.         $fileContent $this->applyFilters$fileContent "/^(pre_|post_)/i",TRUE);
  33.         $fileContent $this->applyFilters$fileContent "/^post_/i" );
  34.         // write the compiled template into the compiledTemplate-File
  35.         if( ($cfp fopen$flexy->compiledTemplate 'w' )) ) {
  36.             fwrite($cfp,$fileContent);
  37.             fclose($cfp);
  38.             @chmod($flexy->compiledTemplate,0775);
  39.         }
  40.  
  41.         return true;
  42.     }
  43.     /**
  44.     *   actually it will only be used to apply the pre and post filters
  45.     *
  46.     *   @access     public
  47.     *   @version    01/12/10
  48.     *   @author     Alan Knowles <alan@akbkhome.com>
  49.     *   @param      string  $input      the string to filter
  50.     *   @param      array   $prefix     the subset of methods to use.
  51.     *   @return     string  the filtered string
  52.     */
  53.     function applyFilters$input $prefix "",$negate=FALSE)
  54.     {
  55.         $this->flexy->debug("APPLY FILTER $prefix<BR>");
  56.         $filters $this->options['filters'];
  57.         $this->flexy->debug(serialize($filters)."<BR>");
  58.         foreach($filters as $filtername{
  59.             $class = "HTML_Template_Flexy_Compiler_Regex_{$filtername}";
  60.             require_once("HTML/Template/Flexy/Compiler/Regex/{$filtername}.php");
  61.             
  62.             if (!class_exists($class)) {
  63.                 return HTML_Template_Flexy::staticRaiseError("Failed to load filter $filter",null,HTML_TEMPLATE_FLEXY_ERROR_DIE);
  64.             }
  65.             
  66.             if (!@$this->filter_objects[$class])  {
  67.                 $this->filter_objects[$class= new $class;
  68.                 $this->filter_objects[$class]->_set_engine($this);
  69.             }
  70.             $filter &$this->filter_objects[$class];
  71.             $methods get_class_methods($class);
  72.             $this->flexy->debug("METHODS:");
  73.             $this->flexy->debug(serialize($methods)."<BR>");
  74.             foreach($methods as $method{
  75.                 if ($method{0== "_"{
  76.                     continue; // private
  77.                 }
  78.                 if ($method  == $class{
  79.                     continue; // constructor
  80.                 }
  81.                 $this->flexy->debug("TEST: $negate $prefix : $method");
  82.                 if ($negate &&  preg_match($prefix,$method)) {
  83.                     continue;
  84.                 }
  85.                 if (!$negate && !preg_match($prefix,$method)) {
  86.                     continue;
  87.                 }
  88.                 
  89.                 $this->flexy->debug("APPLYING $filtername $method<BR>");
  90.                 $input $filter->$method($input);
  91.             }
  92.         }
  93.  
  94.         return $input;
  95.     }
  96. }

Documentation generated on Mon, 11 Mar 2019 15:59:57 -0400 by phpDocumentor 1.4.4. PEAR Logo Copyright © PHP Group 2004.