uneven braces with custom delimiters throws Mustache_Exception_SyntaxException
This commit is contained in:
@@ -179,6 +179,14 @@ class Mustache_Tokenizer
|
||||
$lastName = $token[self::NAME];
|
||||
if (substr($lastName, -1) === '}') {
|
||||
$token[self::NAME] = trim(substr($lastName, 0, -1));
|
||||
} else {
|
||||
$msg = sprintf(
|
||||
'Uneven closing tag encountered: %s on line %d',
|
||||
substr($lastName, -1),
|
||||
$token[self::LINE]
|
||||
);
|
||||
|
||||
throw new Mustache_Exception_SyntaxException($msg, $token);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,6 +35,17 @@ class Mustache_Test_TokenizerTest extends PHPUnit_Framework_TestCase
|
||||
$tokenizer->scan($text, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* @expectedException Mustache_Exception_SyntaxException
|
||||
*/
|
||||
public function testUnevenBracesWithCustomDelimiterThrowExceptions()
|
||||
{
|
||||
$tokenizer = new Mustache_Tokenizer;
|
||||
|
||||
$text = "<%{ name %>";
|
||||
$tokenizer->scan($text, "<% %>");
|
||||
}
|
||||
|
||||
public function getTokens()
|
||||
{
|
||||
return array(
|
||||
@@ -246,6 +257,22 @@ class Mustache_Test_TokenizerTest extends PHPUnit_Framework_TestCase
|
||||
),
|
||||
)
|
||||
),
|
||||
|
||||
// unescaped custom delimiters are properly parsed
|
||||
array(
|
||||
"<%{ a }%>",
|
||||
"<% %>",
|
||||
array(
|
||||
array(
|
||||
Mustache_Tokenizer::TYPE => Mustache_Tokenizer::T_UNESCAPED,
|
||||
Mustache_Tokenizer::NAME => 'a',
|
||||
Mustache_Tokenizer::OTAG => '<%',
|
||||
Mustache_Tokenizer::CTAG => '%>',
|
||||
Mustache_Tokenizer::LINE => 0,
|
||||
Mustache_Tokenizer::INDEX => 9,
|
||||
)
|
||||
)
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user