preparation release
This commit is contained in:
commit
f5e3a62ee8
196 changed files with 64314 additions and 0 deletions
98
HTML/Template/Flexy/Compiler/Regex.php
Normal file
98
HTML/Template/Flexy/Compiler/Regex.php
Normal file
|
|
@ -0,0 +1,98 @@
|
|||
<?php
|
||||
|
||||
class HTML_Template_Flexy_Compiler_Regex {
|
||||
|
||||
/**
|
||||
* The main flexy engine
|
||||
*
|
||||
* @var object HTML_Template_Flexy
|
||||
* @access public
|
||||
*/
|
||||
|
||||
var $flexy;
|
||||
/**
|
||||
* classicParse - the older regex based code generator.
|
||||
* here all the replacing, filtering and writing of the compiled file is done
|
||||
* well this is not much work, but still its in here :-)
|
||||
*
|
||||
* @access private
|
||||
* @version 01/12/03
|
||||
* @author Wolfram Kriesing <wolfram@kriesing.de>
|
||||
* @author Alan Knowles <alan@akbkhome.com>
|
||||
* @return boolean (basically true all the time here)
|
||||
*/
|
||||
function compile(&$flexy)
|
||||
{
|
||||
$this->flexy = &$flexy;
|
||||
// read the entire file into one variable
|
||||
$fileContent = file_get_contents($flexy->currentTemplate);
|
||||
|
||||
// apply pre filter
|
||||
$fileContent = $this->applyFilters( $fileContent , "/^pre_/i" );
|
||||
$fileContent = $this->applyFilters( $fileContent , "/^(pre_|post_)/i",TRUE);
|
||||
$fileContent = $this->applyFilters( $fileContent , "/^post_/i" );
|
||||
// write the compiled template into the compiledTemplate-File
|
||||
if( ($cfp = fopen( $flexy->compiledTemplate , 'w' )) ) {
|
||||
fwrite($cfp,$fileContent);
|
||||
fclose($cfp);
|
||||
@chmod($flexy->compiledTemplate,0775);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* actually it will only be used to apply the pre and post filters
|
||||
*
|
||||
* @access public
|
||||
* @version 01/12/10
|
||||
* @author Alan Knowles <alan@akbkhome.com>
|
||||
* @param string $input the string to filter
|
||||
* @param array $prefix the subset of methods to use.
|
||||
* @return string the filtered string
|
||||
*/
|
||||
function applyFilters( $input , $prefix = "",$negate=FALSE)
|
||||
{
|
||||
$this->flexy->debug("APPLY FILTER $prefix<BR>");
|
||||
$filters = $this->options['filters'];
|
||||
$this->flexy->debug(serialize($filters)."<BR>");
|
||||
foreach($filters as $filtername) {
|
||||
$class = "HTML_Template_Flexy_Compiler_Regex_{$filtername}";
|
||||
require_once("HTML/Template/Flexy/Compiler/Regex/{$filtername}.php");
|
||||
|
||||
if (!class_exists($class)) {
|
||||
return HTML_Template_Flexy::raiseError("Failed to load filter $filter",null,HTML_TEMPLATE_FLEXY_ERROR_DIE);
|
||||
}
|
||||
|
||||
if (!@$this->filter_objects[$class]) {
|
||||
$this->filter_objects[$class] = new $class;
|
||||
$this->filter_objects[$class]->_set_engine($this);
|
||||
}
|
||||
$filter = &$this->filter_objects[$class];
|
||||
$methods = get_class_methods($class);
|
||||
$this->flexy->debug("METHODS:");
|
||||
$this->flexy->debug(serialize($methods)."<BR>");
|
||||
foreach($methods as $method) {
|
||||
if ($method{0} == "_") {
|
||||
continue; // private
|
||||
}
|
||||
if ($method == $class) {
|
||||
continue; // constructor
|
||||
}
|
||||
$this->flexy->debug("TEST: $negate $prefix : $method");
|
||||
if ($negate && preg_match($prefix,$method)) {
|
||||
continue;
|
||||
}
|
||||
if (!$negate && !preg_match($prefix,$method)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$this->flexy->debug("APPLYING $filtername $method<BR>");
|
||||
$input = $filter->$method($input);
|
||||
}
|
||||
}
|
||||
|
||||
return $input;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue