mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
Add licenses
This commit is contained in:
parent
614428e88d
commit
5a1097d5a6
@ -1,7 +1,7 @@
|
|||||||
Cytro - awesome template engine for PHP
|
Cytro - awesome template engine for PHP
|
||||||
==========================
|
==========================
|
||||||
|
|
||||||
> Composer package: `{"bzick/cytro": "dev-master"}`. See on [Packagist.org](https://packagist.org/packages/bzick/aspect)
|
> Composer package: `{"bzick/cytro": "dev-master"}`. See on [Packagist.org](https://packagist.org/packages/bzick/cytro)
|
||||||
|
|
||||||
[![Build Status](https://travis-ci.org/bzick/aspect.png?branch=master)](https://travis-ci.org/bzick/cytro)
|
[![Build Status](https://travis-ci.org/bzick/aspect.png?branch=master)](https://travis-ci.org/bzick/cytro)
|
||||||
## [About](./docs/about.md) :: [Documentation](./docs/main.md) :: [Benchmark](./docs/benchmark.md) :: [Articles](./docs/articles.md)
|
## [About](./docs/about.md) :: [Documentation](./docs/main.md) :: [Benchmark](./docs/benchmark.md) :: [Articles](./docs/articles.md)
|
||||||
|
3
authors.md
Normal file
3
authors.md
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Project Founder and Developer:
|
||||||
|
|
||||||
|
- Ivan Shalganov <ivan.shalganov@gmail.com>
|
@ -13,9 +13,9 @@ Benchmark::run("twig", 'echo/twig.tpl', __DIR__.'/echo/data.json', false, '!comp
|
|||||||
Benchmark::run("twig", 'echo/twig.tpl', __DIR__.'/echo/data.json', false, 'compiled and !loaded');
|
Benchmark::run("twig", 'echo/twig.tpl', __DIR__.'/echo/data.json', false, 'compiled and !loaded');
|
||||||
Benchmark::run("twig", 'echo/twig.tpl', __DIR__.'/echo/data.json', true, 'compiled and loaded');
|
Benchmark::run("twig", 'echo/twig.tpl', __DIR__.'/echo/data.json', true, 'compiled and loaded');
|
||||||
|
|
||||||
Benchmark::run("aspect", 'echo/smarty.tpl', __DIR__.'/echo/data.json', false, '!compiled and !loaded');
|
Benchmark::run("cytro", 'echo/smarty.tpl', __DIR__.'/echo/data.json', false, '!compiled and !loaded');
|
||||||
Benchmark::run("aspect", 'echo/smarty.tpl', __DIR__.'/echo/data.json', false, 'compiled and !loaded');
|
Benchmark::run("cytro", 'echo/smarty.tpl', __DIR__.'/echo/data.json', false, 'compiled and !loaded');
|
||||||
Benchmark::run("aspect", 'echo/smarty.tpl', __DIR__.'/echo/data.json', true, 'compiled and loaded');
|
Benchmark::run("cytro", 'echo/smarty.tpl', __DIR__.'/echo/data.json', true, 'compiled and loaded');
|
||||||
exit;
|
exit;
|
||||||
|
|
||||||
require(__DIR__.'/../../vendor/autoload.php');
|
require(__DIR__.'/../../vendor/autoload.php');
|
||||||
|
@ -3,7 +3,7 @@ About Cytro [RU]
|
|||||||
|
|
||||||
Cytro - самый быстрый, гибкий и тонкий шаблонизатор для PHP, унаследовавший синтаксис от Smarty3 и улучшив его.
|
Cytro - самый быстрый, гибкий и тонкий шаблонизатор для PHP, унаследовавший синтаксис от Smarty3 и улучшив его.
|
||||||
Пожалуй это единственный шаблонизатор, который не использет ни регулярные выражения, как Twig, ни лексер от BISON, как Smarty3.
|
Пожалуй это единственный шаблонизатор, который не использет ни регулярные выражения, как Twig, ни лексер от BISON, как Smarty3.
|
||||||
Вы не найдёте ни одного регулярного выражения в ядре Aspect, но тем не менее ядро простое, компактное и очень быстрое.
|
Вы не найдёте ни одного регулярного выражения в ядре Cytro, но тем не менее ядро простое, компактное и очень быстрое.
|
||||||
|
|
||||||
* Скорость. Разбор шаблонов постоен на основе нативного [токенайзера](http://docs.php.net/tokenizer). Шаблон преобразуется в исполняемый PHP код,
|
* Скорость. Разбор шаблонов постоен на основе нативного [токенайзера](http://docs.php.net/tokenizer). Шаблон преобразуется в исполняемый PHP код,
|
||||||
который может быть закеширован на файловой системе.
|
который может быть закеширован на файловой системе.
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
$aspect->addModifier(string $modifier, callable $callback);
|
$cytro->addModifier(string $modifier, callable $callback);
|
||||||
```
|
```
|
||||||
|
|
||||||
* `$modifier` - название модификатора, которое будет использоваться в шаблоне
|
* `$modifier` - название модификатора, которое будет использоваться в шаблоне
|
||||||
@ -16,7 +16,7 @@ For example:
|
|||||||
```
|
```
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$aspect->addModifier('my_modifier', function ($variable, $param1, $param2) {
|
$cytro->addModifier('my_modifier', function ($variable, $param1, $param2) {
|
||||||
// ...
|
// ...
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
@ -11,7 +11,7 @@ Tags [RU]
|
|||||||
Примитивное добавление функции можно осуществить следующим образом:
|
Примитивное добавление функции можно осуществить следующим образом:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$aspect->addFunction(string $function_name, callable $callback[, callable $parser]);
|
$cytro->addFunction(string $function_name, callable $callback[, callable $parser]);
|
||||||
```
|
```
|
||||||
|
|
||||||
В данном случае запускается стандартный парсер, который автоматически разберет аргументы тега, которые должны быть в формате HTML аттрибутов и отдаст их в функцию ассоциативным массивом.
|
В данном случае запускается стандартный парсер, который автоматически разберет аргументы тега, которые должны быть в формате HTML аттрибутов и отдаст их в функцию ассоциативным массивом.
|
||||||
@ -19,7 +19,7 @@ $aspect->addFunction(string $function_name, callable $callback[, callable $parse
|
|||||||
Существует более совершенный способ добавления функции:
|
Существует более совершенный способ добавления функции:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$aspect->addFunctionSmarty(string $function_name, callable $callback);
|
$cytro->addFunctionSmarty(string $function_name, callable $callback);
|
||||||
```
|
```
|
||||||
|
|
||||||
В данном случае парсер просканирует список аргументов коллбека и попробует сопоставить с аргументами из тега. Таким образом вы успешно можете добавлять Ваши штатные функции.
|
В данном случае парсер просканирует список аргументов коллбека и попробует сопоставить с аргументами из тега. Таким образом вы успешно можете добавлять Ваши штатные функции.
|
||||||
@ -29,7 +29,7 @@ $aspect->addFunctionSmarty(string $function_name, callable $callback);
|
|||||||
Добавление блоковой функции аналогичен добавлению строковой за исключением того что есть возможность указать парсер для закрывающего тега.
|
Добавление блоковой функции аналогичен добавлению строковой за исключением того что есть возможность указать парсер для закрывающего тега.
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$aspect->addBlockFunction(string $function_name, callable $callback[, callable $parser_open[, callable $parser_close]]);
|
$cytro->addBlockFunction(string $function_name, callable $callback[, callable $parser_open[, callable $parser_close]]);
|
||||||
```
|
```
|
||||||
|
|
||||||
Сам коллбек принимает первым аргументом контент между открывающим и закрывающим тегом, а вторым аргументом - ассоциативный массив из аргуметов тега.
|
Сам коллбек принимает первым аргументом контент между открывающим и закрывающим тегом, а вторым аргументом - ассоциативный массив из аргуметов тега.
|
||||||
@ -39,14 +39,14 @@ $aspect->addBlockFunction(string $function_name, callable $callback[, callable $
|
|||||||
Добавление строчного компилятора осуществляеться очень просто:
|
Добавление строчного компилятора осуществляеться очень просто:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$aspect->addCompiler(string $compiler, callable $parser);
|
$cytro->addCompiler(string $compiler, callable $parser);
|
||||||
```
|
```
|
||||||
|
|
||||||
Парсер должен принимать `Aspect\Tokenizer $tokenizer`, `Aspect\Template $template` и возвращать PHP код.
|
Парсер должен принимать `Aspect\Tokenizer $tokenizer`, `Aspect\Template $template` и возвращать PHP код.
|
||||||
Компилятор так же можно импортировать из класса автоматически
|
Компилятор так же можно импортировать из класса автоматически
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$aspect->addCompilerSmart(string $compiler, $storage);
|
$cytro->addCompilerSmart(string $compiler, $storage);
|
||||||
```
|
```
|
||||||
|
|
||||||
`$storage` может быть как классом так и объектом. В данном случае шаблонизатор будет искать метод `tag{$compiler}`, который будет взят в качестве парсера тега.
|
`$storage` может быть как классом так и объектом. В данном случае шаблонизатор будет искать метод `tag{$compiler}`, который будет взят в качестве парсера тега.
|
||||||
@ -56,13 +56,13 @@ $aspect->addCompilerSmart(string $compiler, $storage);
|
|||||||
Добавление блочного компилятора осуществяется двум способами. Первый
|
Добавление блочного компилятора осуществяется двум способами. Первый
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$aspect->addBlockCompiler(string $compiler, array $parsers, array $tags);
|
$cytro->addBlockCompiler(string $compiler, array $parsers, array $tags);
|
||||||
```
|
```
|
||||||
|
|
||||||
где `$parser` ассоциативный массив `["open" => parser, "close" => parser]`, сождержащий парсер на открывающий и на закрывающий тег, а `$tags` содержит список внутренних тегов в формате `["tag_name"] => parser`, которые могут быть использованы только с этим компилятором.
|
где `$parser` ассоциативный массив `["open" => parser, "close" => parser]`, сождержащий парсер на открывающий и на закрывающий тег, а `$tags` содержит список внутренних тегов в формате `["tag_name"] => parser`, которые могут быть использованы только с этим компилятором.
|
||||||
Второй способ добавления парсера через импортирование из класса или объекта методов:
|
Второй способ добавления парсера через импортирование из класса или объекта методов:
|
||||||
|
|
||||||
```php
|
```php
|
||||||
$aspect->addBlockCompilerSmart(string $compiler, $storage, array $tags, array $floats);
|
$cytro->addBlockCompilerSmart(string $compiler, $storage, array $tags, array $floats);
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ See also [security options](./settings.md)
|
|||||||
|
|
||||||
### Scalar values
|
### Scalar values
|
||||||
|
|
||||||
Строки в Aspect обрабатываются идентично правилам подстановки переменных в строки в PHP, т.е. в двойных кавычках переменная заменяется на её значение, в одинарных замены не происходит.
|
Строки в Cytro обрабатываются идентично правилам подстановки переменных в строки в PHP, т.е. в двойных кавычках переменная заменяется на её значение, в одинарных замены не происходит.
|
||||||
|
|
||||||
```smarty
|
```smarty
|
||||||
{var $foo="Username"}
|
{var $foo="Username"}
|
||||||
@ -185,11 +185,11 @@ See also [security options](./settings.md)
|
|||||||
|
|
||||||
### Ignoring temaplate code
|
### Ignoring temaplate code
|
||||||
|
|
||||||
В шаблонизаторе Aspect используются фигурные скобки для отделения HTML от кода Aspect.
|
В шаблонизаторе Cytro используются фигурные скобки для отделения HTML от кода Cytro.
|
||||||
Если требуется вывести текст, содержащий фигурные скобки помните о следующих возможностях:
|
Если требуется вывести текст, содержащий фигурные скобки помните о следующих возможностях:
|
||||||
|
|
||||||
1. Использование блочного тега `{ignore}{/ignore}`. Текст внутри этого тега текст не компилируется шаблонизатором и выводится как есть.
|
1. Использование блочного тега `{ignore}{/ignore}`. Текст внутри этого тега текст не компилируется шаблонизатором и выводится как есть.
|
||||||
2. Если после открывающей фигурной скобки есть пробельный символ (пробел или `\t`) или перенос строки (`\r` или `\n`), то она не воспринимается как разделитель rкода Aspect и код после неё выводится как есть.
|
2. Если после открывающей фигурной скобки есть пробельный символ (пробел или `\t`) или перенос строки (`\r` или `\n`), то она не воспринимается как разделитель rкода Cytro и код после неё выводится как есть.
|
||||||
|
|
||||||
Пример:
|
Пример:
|
||||||
|
|
||||||
|
@ -79,7 +79,7 @@ Tag {foreach} [RU]
|
|||||||
{/foreach}
|
{/foreach}
|
||||||
```
|
```
|
||||||
|
|
||||||
В блоке `{foreachelse}...{/foreach}` использование `{break}`, `{continue}` выбросит исключение `Aspect\CompileException` при компиляции
|
В блоке `{foreachelse}...{/foreach}` использование `{break}`, `{continue}` выбросит исключение `Cytro\CompileException` при компиляции
|
||||||
|
|
||||||
### Notice
|
### Notice
|
||||||
|
|
||||||
|
31
license.md
Normal file
31
license.md
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
Copyright (c) 2013 by Ivan Shalganov.
|
||||||
|
|
||||||
|
Some rights reserved.
|
||||||
|
|
||||||
|
Redistribution and use in source and binary forms, with or without
|
||||||
|
modification, are permitted provided that the following conditions are
|
||||||
|
met:
|
||||||
|
|
||||||
|
* Redistributions of source code must retain the above copyright
|
||||||
|
notice, this list of conditions and the following disclaimer.
|
||||||
|
|
||||||
|
* Redistributions in binary form must reproduce the above
|
||||||
|
copyright notice, this list of conditions and the following
|
||||||
|
disclaimer in the documentation and/or other materials provided
|
||||||
|
with the distribution.
|
||||||
|
|
||||||
|
* The names of the contributors may not be used to endorse or
|
||||||
|
promote products derived from this software without specific
|
||||||
|
prior written permission.
|
||||||
|
|
||||||
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||||
|
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||||
|
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||||
|
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||||
|
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||||
|
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||||
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||||
|
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
|
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* (c) 2013 Ivan Shalganov
|
* (c) 2013 Ivan Shalganov
|
||||||
*
|
*
|
||||||
* For the full copyright and license information, please view the LICENSE
|
* For the full copyright and license information, please view the license.md
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
use Cytro\Template,
|
use Cytro\Template,
|
||||||
@ -223,12 +223,12 @@ class Cytro {
|
|||||||
} else {
|
} else {
|
||||||
throw new InvalidArgumentException("Source must be a valid path or provider object");
|
throw new InvalidArgumentException("Source must be a valid path or provider object");
|
||||||
}
|
}
|
||||||
$aspect = new static($provider);
|
$cytro = new static($provider);
|
||||||
$aspect->setCompileDir($compile_dir);
|
$cytro->setCompileDir($compile_dir);
|
||||||
if($options) {
|
if($options) {
|
||||||
$aspect->setOptions($options);
|
$cytro->setOptions($options);
|
||||||
}
|
}
|
||||||
return $aspect;
|
return $cytro;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -610,7 +610,7 @@ class Cytro {
|
|||||||
if(!is_file($this->_compile_dir."/".$file_name)) {
|
if(!is_file($this->_compile_dir."/".$file_name)) {
|
||||||
return $this->compile($tpl);
|
return $this->compile($tpl);
|
||||||
} else {
|
} else {
|
||||||
$aspect = $this;
|
$cytro = $this;
|
||||||
return include($this->_compile_dir."/".$file_name);
|
return include($this->_compile_dir."/".$file_name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* (c) 2013 Ivan Shalganov
|
* (c) 2013 Ivan Shalganov
|
||||||
*
|
*
|
||||||
* For the full copyright and license information, please view the LICENSE
|
* For the full copyright and license information, please view the license.md
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
namespace Cytro;
|
namespace Cytro;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* (c) 2013 Ivan Shalganov
|
* (c) 2013 Ivan Shalganov
|
||||||
*
|
*
|
||||||
* For the full copyright and license information, please view the LICENSE
|
* For the full copyright and license information, please view the license.md
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
namespace Cytro;
|
namespace Cytro;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* (c) 2013 Ivan Shalganov
|
* (c) 2013 Ivan Shalganov
|
||||||
*
|
*
|
||||||
* For the full copyright and license information, please view the LICENSE
|
* For the full copyright and license information, please view the license.md
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
namespace Cytro;
|
namespace Cytro;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* (c) 2013 Ivan Shalganov
|
* (c) 2013 Ivan Shalganov
|
||||||
*
|
*
|
||||||
* For the full copyright and license information, please view the LICENSE
|
* For the full copyright and license information, please view the license.md
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
namespace Cytro;
|
namespace Cytro;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* (c) 2013 Ivan Shalganov
|
* (c) 2013 Ivan Shalganov
|
||||||
*
|
*
|
||||||
* For the full copyright and license information, please view the LICENSE
|
* For the full copyright and license information, please view the license.md
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
namespace Cytro;
|
namespace Cytro;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* (c) 2013 Ivan Shalganov
|
* (c) 2013 Ivan Shalganov
|
||||||
*
|
*
|
||||||
* For the full copyright and license information, please view the LICENSE
|
* For the full copyright and license information, please view the license.md
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
namespace Cytro;
|
namespace Cytro;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* (c) 2013 Ivan Shalganov
|
* (c) 2013 Ivan Shalganov
|
||||||
*
|
*
|
||||||
* For the full copyright and license information, please view the LICENSE
|
* For the full copyright and license information, please view the license.md
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
namespace Cytro;
|
namespace Cytro;
|
||||||
@ -67,17 +67,18 @@ class Template extends Render {
|
|||||||
/**
|
/**
|
||||||
* Just factory
|
* Just factory
|
||||||
*
|
*
|
||||||
* @param \Cytro $aspect
|
* @param \Cytro $cytro
|
||||||
* @param $options
|
* @param $options
|
||||||
* @return Template
|
* @return Template
|
||||||
*/
|
*/
|
||||||
public static function factory(Cytro $aspect, $options) {
|
public static function factory(Cytro $cytro, $options) {
|
||||||
return new static($aspect, $options);
|
return new static($cytro, $options);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param Cytro $cytro Template storage
|
* @param Cytro $cytro Template storage
|
||||||
* @param $options
|
* @param int $options
|
||||||
|
* @return \Cytro\Template
|
||||||
*/
|
*/
|
||||||
public function __construct(Cytro $cytro, $options) {
|
public function __construct(Cytro $cytro, $options) {
|
||||||
$this->_cytro = $cytro;
|
$this->_cytro = $cytro;
|
||||||
@ -88,7 +89,7 @@ class Template extends Render {
|
|||||||
* Load source from provider
|
* Load source from provider
|
||||||
* @param string $name
|
* @param string $name
|
||||||
* @param bool $compile
|
* @param bool $compile
|
||||||
* @return \Cytro\Template
|
* @return $this
|
||||||
*/
|
*/
|
||||||
public function load($name, $compile = true) {
|
public function load($name, $compile = true) {
|
||||||
$this->_name = $name;
|
$this->_name = $name;
|
||||||
@ -214,8 +215,18 @@ class Template extends Render {
|
|||||||
* @param string $text
|
* @param string $text
|
||||||
*/
|
*/
|
||||||
private function _appendText($text) {
|
private function _appendText($text) {
|
||||||
|
if($this->_filter) {
|
||||||
|
if(strpos($text, "<?") === false) {
|
||||||
|
foreach(explode("<?", $text) as $fragment) {
|
||||||
|
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$this->_body .= $text;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
$this->_body .= str_replace("<?", '<?php echo "<?"; ?>'.PHP_EOL, $text);
|
$this->_body .= str_replace("<?", '<?php echo "<?"; ?>'.PHP_EOL, $text);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Append PHP_EOL after each '?>'
|
* Append PHP_EOL after each '?>'
|
||||||
@ -277,7 +288,7 @@ class Template extends Render {
|
|||||||
public function getTemplateCode() {
|
public function getTemplateCode() {
|
||||||
return "<?php \n".
|
return "<?php \n".
|
||||||
"/** Cytro template '".$this->_name."' compiled at ".date('Y-m-d H:i:s')." */\n".
|
"/** Cytro template '".$this->_name."' compiled at ".date('Y-m-d H:i:s')." */\n".
|
||||||
"return new Cytro\\Render(\$aspect, ".$this->_getClosureSource().", ".var_export(array(
|
"return new Cytro\\Render(\$cytro, ".$this->_getClosureSource().", ".var_export(array(
|
||||||
"options" => $this->_options,
|
"options" => $this->_options,
|
||||||
"provider" => $this->_scm,
|
"provider" => $this->_scm,
|
||||||
"name" => $this->_name,
|
"name" => $this->_name,
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
*
|
*
|
||||||
* (c) 2013 Ivan Shalganov
|
* (c) 2013 Ivan Shalganov
|
||||||
*
|
*
|
||||||
* For the full copyright and license information, please view the LICENSE
|
* For the full copyright and license information, please view the license.md
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
*/
|
*/
|
||||||
namespace Cytro;
|
namespace Cytro;
|
||||||
@ -32,8 +32,7 @@ defined('T_YIELD') || define('T_YIELD', 370);
|
|||||||
* @property array $curr the current token
|
* @property array $curr the current token
|
||||||
* @property array $next the next token
|
* @property array $next the next token
|
||||||
*
|
*
|
||||||
* @package aspect
|
* @package Cytro
|
||||||
* @author Ivan Shalganov <owner@bzick.net>
|
|
||||||
*/
|
*/
|
||||||
class Tokenizer {
|
class Tokenizer {
|
||||||
const TOKEN = 0;
|
const TOKEN = 0;
|
||||||
|
@ -147,7 +147,7 @@ class ExtendsTemplateTest extends TestCase {
|
|||||||
// * @group extends
|
// * @group extends
|
||||||
// */
|
// */
|
||||||
// public function _testParentLevel() {
|
// public function _testParentLevel() {
|
||||||
// //echo($this->aspect->getTemplate("parent.tpl")->_body); exit;
|
// //echo($this->cytro->getTemplate("parent.tpl")->_body); exit;
|
||||||
// $this->assertSame($this->cytro->fetch("parent.tpl", array("a" => "a char")), "Parent template\nBlock1: Block2: Block3: default");
|
// $this->assertSame($this->cytro->fetch("parent.tpl", array("a" => "a char")), "Parent template\nBlock1: Block2: Block3: default");
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
@ -155,7 +155,7 @@ class ExtendsTemplateTest extends TestCase {
|
|||||||
// * @group extends
|
// * @group extends
|
||||||
// */
|
// */
|
||||||
// public function testChildLevel1() {
|
// public function testChildLevel1() {
|
||||||
// //echo($this->aspect->fetch("child1.tpl", array("a" => "a char"))); exit;
|
// //echo($this->cytro->fetch("child1.tpl", array("a" => "a char"))); exit;
|
||||||
// }
|
// }
|
||||||
//
|
//
|
||||||
// /**
|
// /**
|
||||||
|
@ -17,7 +17,7 @@ class ScopeTest extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function testBlock() {
|
public function testBlock() {
|
||||||
/*$scope = new Scope($this->aspect, new Template($this->aspect), 1, array(
|
/*$scope = new Scope($this->cytro, new Template($this->cytro), 1, array(
|
||||||
"open" => array($this, "openTag"),
|
"open" => array($this, "openTag"),
|
||||||
"close" => array($this, "closeTag")
|
"close" => array($this, "closeTag")
|
||||||
), 0);
|
), 0);
|
||||||
|
@ -16,7 +16,7 @@ class TemplateTest extends TestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*public function testSandbox() {
|
/*public function testSandbox() {
|
||||||
var_dump($this->aspect->compileCode('{"$s:{$b+1}f d {$d}"}')->_body);
|
var_dump($this->cytro->compileCode('{"$s:{$b+1}f d {$d}"}')->_body);
|
||||||
exit;
|
exit;
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
|
@ -36,9 +36,9 @@ class CytroTest extends \Cytro\TestCase {
|
|||||||
public function testStorage() {
|
public function testStorage() {
|
||||||
$this->tpl('custom.tpl', 'Custom template');
|
$this->tpl('custom.tpl', 'Custom template');
|
||||||
$this->assertSame("Custom template", $this->cytro->fetch('custom.tpl', array()));
|
$this->assertSame("Custom template", $this->cytro->fetch('custom.tpl', array()));
|
||||||
//$this->aspect->clearCompiledTemplate('custom.tpl', false);
|
//$this->cytro->clearCompiledTemplate('custom.tpl', false);
|
||||||
|
|
||||||
//$this->assertSame("Custom template", $this->aspect->fetch('custom.tpl', array()));
|
//$this->assertSame("Custom template", $this->cytro->fetch('custom.tpl', array()));
|
||||||
|
|
||||||
$this->tpl('custom.tpl', 'Custom template 2');
|
$this->tpl('custom.tpl', 'Custom template 2');
|
||||||
$this->assertSame("Custom template", $this->cytro->fetch('custom.tpl', array()));
|
$this->assertSame("Custom template", $this->cytro->fetch('custom.tpl', array()));
|
||||||
|
Loading…
Reference in New Issue
Block a user