mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
Update docs and add tests
This commit is contained in:
parent
a5f83a59b8
commit
e37c8468eb
@ -18,6 +18,7 @@ CHANGELOG
|
||||
- Internal optimization
|
||||
- Add options for benchmark
|
||||
- Add stress test (thanks to @klkvsk)
|
||||
- Bugs--
|
||||
- Comments++
|
||||
- Docs++
|
||||
- Test++
|
||||
|
5
docs/ext/extenstions.md
Normal file
5
docs/ext/extenstions.md
Normal file
@ -0,0 +1,5 @@
|
||||
Extensions
|
||||
==========
|
||||
|
||||
* [Extra pack](https://github.com/bzick/fenom-extra) basic add-ons for web-base project.
|
||||
* *Smarty pack* (planned) Smarty3 adapter
|
@ -56,6 +56,7 @@ Documentation
|
||||
|
||||
### Extends
|
||||
|
||||
* [Extensions](./ext/extensions.md)
|
||||
* [Add tags](./ext/tags.md)
|
||||
* [Add modificators](./ext/mods.md)
|
||||
* [Add template provider](./ext/provider.md)
|
||||
|
@ -35,7 +35,7 @@ class Fenom {
|
||||
const DISABLE_CACHE = 0x400;
|
||||
const FORCE_VERIFY = 0x800; // reserved
|
||||
const AUTO_TRIM = 0x1000; // reserved
|
||||
const DENY_STATIC_METHODS = 0x2000; // reserved
|
||||
const DENY_STATICS = 0x2000; // reserved
|
||||
|
||||
/* Default parsers */
|
||||
const DEFAULT_CLOSE_COMPILER = 'Fenom\Compiler::stdClose';
|
||||
@ -48,7 +48,7 @@ class Fenom {
|
||||
* @var int[] of possible options, as associative array
|
||||
* @see setOptions
|
||||
*/
|
||||
private static $_option_list = array(
|
||||
private static $_options_list = array(
|
||||
"disable_methods" => self::DENY_METHODS,
|
||||
"disable_native_funcs" => self::DENY_INLINE_FUNCS,
|
||||
"disable_cache" => self::DISABLE_CACHE,
|
||||
@ -56,7 +56,9 @@ class Fenom {
|
||||
"auto_reload" => self::AUTO_RELOAD,
|
||||
"force_include" => self::FORCE_INCLUDE,
|
||||
"auto_escape" => self::AUTO_ESCAPE,
|
||||
"force_verify" => self::FORCE_VERIFY
|
||||
"force_verify" => self::FORCE_VERIFY,
|
||||
"auto_trim" => self::AUTO_TRIM,
|
||||
"disable_statics" => self::DENY_STATICS,
|
||||
);
|
||||
|
||||
/**
|
||||
@ -530,7 +532,7 @@ class Fenom {
|
||||
*/
|
||||
public function setOptions($options) {
|
||||
if(is_array($options)) {
|
||||
$options = self::_makeMask($options, self::$_option_list);
|
||||
$options = self::_makeMask($options, self::$_options_list, $this->_options);
|
||||
}
|
||||
$this->_storage = array();
|
||||
$this->_options = $options;
|
||||
@ -742,7 +744,7 @@ class Fenom {
|
||||
* @throws \RuntimeException if key from custom assoc doesn't exists into possible values
|
||||
*/
|
||||
private static function _makeMask(array $values, array $options, $mask = 0) {
|
||||
foreach ($values as $key=>$value) {
|
||||
foreach ($values as $key => $value) {
|
||||
if (isset($options[$key])) {
|
||||
if ($options[$key]) {
|
||||
$mask |= $options[$key];
|
||||
|
@ -5,6 +5,19 @@ use Fenom\Render,
|
||||
|
||||
class FenomTest extends \Fenom\TestCase {
|
||||
|
||||
public static function providerOptions() {
|
||||
return array(
|
||||
array("disable_methods", Fenom::DENY_METHODS),
|
||||
array("disable_native_funcs", Fenom::DENY_INLINE_FUNCS),
|
||||
array("disable_cache", Fenom::DISABLE_CACHE),
|
||||
array("force_compile", Fenom::FORCE_COMPILE),
|
||||
array("auto_reload", Fenom::AUTO_RELOAD),
|
||||
array("force_include", Fenom::FORCE_INCLUDE),
|
||||
array("auto_escape", Fenom::AUTO_ESCAPE),
|
||||
array("force_verify", Fenom::FORCE_VERIFY)
|
||||
);
|
||||
}
|
||||
|
||||
public function testCompileFile() {
|
||||
$a = array(
|
||||
"a" => "a",
|
||||
@ -22,10 +35,6 @@ class FenomTest extends \Fenom\TestCase {
|
||||
public function testStorage() {
|
||||
$this->tpl('custom.tpl', 'Custom template');
|
||||
$this->assertSame("Custom template", $this->fenom->fetch('custom.tpl', array()));
|
||||
//$this->fenom->clearCompiledTemplate('custom.tpl', false);
|
||||
|
||||
//$this->assertSame("Custom template", $this->fenom->fetch('custom.tpl', array()));
|
||||
|
||||
$this->tpl('custom.tpl', 'Custom template 2');
|
||||
$this->assertSame("Custom template", $this->fenom->fetch('custom.tpl', array()));
|
||||
}
|
||||
@ -78,6 +87,21 @@ class FenomTest extends \Fenom\TestCase {
|
||||
$this->tpl('custom.tpl', 'Custom compiler {myblockcompiler name="bar"} block1 {tag name="baz"} block2 {/myblockcompiler}');
|
||||
$this->assertSame("Custom compiler PHP_VERSION: ".PHP_VERSION." (for bar) block1 Tag baz of compiler block2 End of compiler", $this->fenom->fetch('custom.tpl', array()));
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
/**
|
||||
* @dataProvider providerOptions
|
||||
*/
|
||||
public function testOptions($code, $option) {
|
||||
static $options = array();
|
||||
static $flags = 0;
|
||||
$options[$code] = true;
|
||||
$flags |= $option;
|
||||
|
||||
$this->fenom->setOptions($options);
|
||||
$this->assertSame($this->fenom->getOptions(), $flags);
|
||||
// printf("from %010b, flags %010b\n", $this->fenom->getOptions(), $flags);
|
||||
// $this->fenom->setOptions(array($code => false));
|
||||
// printf("remove %010b from option %010b, flags %010b\n", $option, $this->fenom->getOptions(), $flags & ~$option);
|
||||
// $this->assertSame($this->fenom->getOptions(), $flags & ~$option);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user