mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-05 19:04:27 +02:00
move strip processing from parser to compiler
This commit is contained in:
@@ -369,12 +369,16 @@ template_element(res)::= XMLTAG. {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// template text
|
// template text
|
||||||
template_element(res)::= TEXT(o). {
|
template_element(res)::= text_content(t). {
|
||||||
if ($this->strip) {
|
res = $this->compiler->processText(t);
|
||||||
res = new Smarty_Internal_ParseTree_Text($this, preg_replace('![\t ]*[\r\n]+[\t ]*!', '', o));
|
}
|
||||||
} else {
|
|
||||||
res = new Smarty_Internal_ParseTree_Text($this, o);
|
text_content(res) ::= TEXT(o). {
|
||||||
}
|
res = o;
|
||||||
|
}
|
||||||
|
|
||||||
|
text_content(res) ::= text_content(t) TEXT(o). {
|
||||||
|
res = t . o;
|
||||||
}
|
}
|
||||||
|
|
||||||
// strip on
|
// strip on
|
||||||
|
@@ -218,6 +218,13 @@ abstract class Smarty_Internal_TemplateCompilerBase
|
|||||||
*/
|
*/
|
||||||
public $parent_compiler = null;
|
public $parent_compiler = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Strip preg pattern
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
public $stripRegEx = '![\t ]*[\r\n]+[\t ]*!';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* method to compile a Smarty template
|
* method to compile a Smarty template
|
||||||
*
|
*
|
||||||
@@ -595,6 +602,27 @@ abstract class Smarty_Internal_TemplateCompilerBase
|
|||||||
return '$_smarty_tpl->tpl_vars[' . $variable . ']->value';
|
return '$_smarty_tpl->tpl_vars[' . $variable . ']->value';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method is called from parser to process a text content section
|
||||||
|
* - remove text from inheritance child templates as they may generate output
|
||||||
|
* - strip text if strip is enabled
|
||||||
|
*
|
||||||
|
* @param string $text
|
||||||
|
*
|
||||||
|
* @return null|\Smarty_Internal_ParseTree_Text
|
||||||
|
*/
|
||||||
|
public function processText($text) {
|
||||||
|
if ($this->inheritance_child && !$this->blockTagNestingLevel) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if ($this->parser->strip) {
|
||||||
|
return new Smarty_Internal_ParseTree_Text($this->parser, preg_replace($this->stripRegEx, '', $text));
|
||||||
|
} else {
|
||||||
|
return new Smarty_Internal_ParseTree_Text($this->parser, $text);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* lazy loads internal compile plugin for tag and calls the compile method
|
* lazy loads internal compile plugin for tag and calls the compile method
|
||||||
* compile objects cached for reuse.
|
* compile objects cached for reuse.
|
||||||
|
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user