- bugfix {strip} must keep space on output creating smarty tags within html tags https://github.com/smarty-php/smarty/issues/177

This commit is contained in:
uwetews
2016-02-10 01:12:57 +01:00
parent 2f62b99173
commit 08db1a4a3f
8 changed files with 23 additions and 13 deletions

View File

@@ -1,4 +1,7 @@
 ===== 3.1.30-dev ===== (xx.xx.xx)
10.02.2016
- bugfix {strip} must keep space on output creating smarty tags within html tags https://github.com/smarty-php/smarty/issues/177
09.02.2016
- move some code from parser into compiler
- reformat all code for unique style

View File

@@ -121,7 +121,7 @@ class Smarty extends Smarty_Internal_TemplateBase
/**
* smarty version
*/
const SMARTY_VERSION = '3.1.30-dev/31';
const SMARTY_VERSION = '3.1.30-dev/32';
/**
* define variable scopes

View File

@@ -54,6 +54,9 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
{
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
//Does tag create output
$compiler->has_output = isset($_attr[ 'assign' ]) ? false : true;
$nocacheParam = $compiler->template->caching && ($compiler->tag_nocache || $compiler->nocache);
if (!$nocacheParam) {
// do not compile as nocache code
@@ -140,7 +143,6 @@ class Smarty_Internal_Compile_Insert extends Smarty_Internal_CompileBase
$_output .= "\$_smarty_tpl->assign({$_assign} , {$_function} ({$_params},\$_smarty_tpl), true);?>";
}
} else {
$compiler->has_output = true;
if ($_smarty_tpl->caching && !$nocacheParam) {
$_output .= "echo Smarty_Internal_Nocache_Insert::compile ('{$_function}',{$_params}, \$_smarty_tpl, '{$_filepath}');?>";
} else {

View File

@@ -77,8 +77,8 @@ class Smarty_Internal_Compile_Private_Block_Plugin extends Smarty_Internal_Compi
}
// closing tag of block plugin, restore nocache
list($_params, $compiler->nocache, $callback) = $this->closeTag($compiler, substr($tag, 0, - 5));
// This tag does create output
$compiler->has_output = true;
//Does tag create output
$compiler->has_output = isset($_params[ 'assign' ]) ? false : true;
// compile code
if (!isset($parameter[ 'modifier_list' ])) {
$mod_pre = $mod_post = $mod_content = '';

View File

@@ -45,11 +45,11 @@ class Smarty_Internal_Compile_Private_Function_Plugin extends Smarty_Internal_Co
*/
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag, $function)
{
// This tag does create output
$compiler->has_output = true;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
//Does tag create output
$compiler->has_output = isset($_attr[ 'assign' ]) ? false : true;
if ($_attr[ 'nocache' ] === true) {
$compiler->tag_nocache = true;
}

View File

@@ -39,6 +39,9 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co
{
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
//Does tag create output
$compiler->has_output = isset($_attr[ 'assign' ]) ? false : true;
if ($_attr[ 'nocache' ] === true) {
$compiler->tag_nocache = true;
}
@@ -72,8 +75,6 @@ class Smarty_Internal_Compile_Private_Object_Function extends Smarty_Internal_Co
}
if (empty($_assign)) {
// This tag does create output
$compiler->has_output = true;
$output = "<?php echo {$return};?>\n";
} else {
$output = "<?php \$_smarty_tpl->assign({$_assign},{$return});?>\n";

View File

@@ -36,10 +36,11 @@ class Smarty_Internal_Compile_Private_Registered_Function extends Smarty_Interna
*/
public function compile($args, Smarty_Internal_TemplateCompilerBase $compiler, $parameter, $tag)
{
// This tag does create output
$compiler->has_output = true;
// check and get attributes
$_attr = $this->getAttributes($compiler, $args);
//Does tag create output
$compiler->has_output = isset($_attr[ 'assign' ]) ? false : true;
if ($_attr[ 'nocache' ]) {
$compiler->tag_nocache = true;
}

View File

@@ -794,8 +794,11 @@ abstract class Smarty_Internal_TemplateCompilerBase
if ((string) $text != '') {
$store = array();
$_store = 0;
$_offset = 0;
$space = '';
if ($this->parser->strip) {
$space = $this->has_output && preg_match('/^\040|\011/', $text) ? ' ' : '';
$this->has_output = false;
if (strpos($text, '<') !== false) {
// capture html elements not to be messed with
$_offset = 0;
@@ -836,7 +839,7 @@ abstract class Smarty_Internal_TemplateCompilerBase
$text = preg_replace($this->stripRegEx, '', $text);
}
}
return new Smarty_Internal_ParseTree_Text($text);
return new Smarty_Internal_ParseTree_Text($space . $text);
}
return null;
}