mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
Merge branch 'origin/master'
Conflicts: CHANGELOG.md docs/tags/raw.md src/Fenom/Compiler.php src/Fenom/Render.php src/Fenom/Template.php
This commit is contained in:
commit
654b259b42
@ -1,7 +1,7 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
## 1.5.0
|
||||
## 2.0.0
|
||||
|
||||
- Add tag filter
|
||||
- Redesign `extends` algorithm
|
||||
@ -12,6 +12,11 @@ Changelog
|
||||
- Move benchmark to another project
|
||||
- Rename `\Fenom\Compiler` to `\Fenom\Tags`
|
||||
|
||||
### 1.4.9 (2013-04-09)
|
||||
|
||||
- Fix #75
|
||||
- Docs++
|
||||
|
||||
### 1.4.8 (2013-12-01)
|
||||
|
||||
- Fix #52
|
||||
|
@ -20,7 +20,15 @@ Tag {macro} [RU]
|
||||
{macro.plus x=$num y=100}
|
||||
```
|
||||
|
||||
На данный момент рекурсивный вызов макроса не поддерживается.
|
||||
Во время рекурсивного вызова используйте суффикс macro что бы обратиться к текущему макросу:
|
||||
|
||||
```smarty
|
||||
{macro plus(x, y, z=0)}
|
||||
...
|
||||
{macro.plus x=2 y=4}
|
||||
...
|
||||
{/macro}
|
||||
```
|
||||
|
||||
### {import}
|
||||
|
||||
|
@ -22,7 +22,7 @@ For functions use tag with prefix `raw:`:
|
||||
{autoescape true}
|
||||
...
|
||||
{my_func page=5} {* escape *}
|
||||
{raw:my_func page=5} {* unescape *}
|
||||
{my_func:raw page=5} {* unescape *}
|
||||
...
|
||||
{/autoescate}
|
||||
```
|
||||
|
@ -3,31 +3,31 @@ Basic usage
|
||||
|
||||
### Initialize Fenom
|
||||
|
||||
Use factory method
|
||||
Creating an object via factory method
|
||||
```php
|
||||
$fenom = Fenom::factory('/path/to/templates', '/path/to/compiled/template', $options);
|
||||
```
|
||||
|
||||
Use `new` operator
|
||||
Creating an object via `new` operator
|
||||
```php
|
||||
$fenom = new Fenom(new Provider('/path/to/templates'));
|
||||
$fenom->setCompileDir('/path/to/template/cache');
|
||||
$fenom->setOptions($options);
|
||||
```
|
||||
|
||||
### Render template
|
||||
### Rendering template
|
||||
|
||||
Output template
|
||||
```php
|
||||
$fenom->display("template/name.tpl", $vars);
|
||||
```
|
||||
|
||||
Get template into the variable
|
||||
Get the result of rendering the template
|
||||
```php
|
||||
$result = $fenom->fetch("template/name.tpl", $vars);
|
||||
```
|
||||
|
||||
Create pipe-line into callback
|
||||
Create the pipeline of rendering into callback
|
||||
```php
|
||||
$fenom->pipe(
|
||||
"template/sitemap.tpl",
|
||||
|
@ -976,4 +976,4 @@ class Compiler
|
||||
$scope->tpl->escape = $scope["escape"];
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -214,7 +214,6 @@ class Render extends \ArrayObject
|
||||
*/
|
||||
public function display(array $values)
|
||||
{
|
||||
// $this->exchangeArray($values);
|
||||
$this->_code->__invoke($values, $this);
|
||||
return $values;
|
||||
}
|
||||
|
@ -571,11 +571,11 @@ class Template extends Render
|
||||
return $this->out($this->parseExpr($tokens), $tokens);
|
||||
}
|
||||
} catch (InvalidUsageException $e) {
|
||||
throw new CompileException($e->getMessage() . " in {$this} line {$this->_line}", 0, E_ERROR, $this->_name, $this->_line, $e);
|
||||
throw new CompileException($e->getMessage() . " in {$this->_name} line {$this->_line}", 0, E_ERROR, $this->_name, $this->_line, $e);
|
||||
} catch (\LogicException $e) {
|
||||
throw new SecurityException($e->getMessage() . " in {$this} line {$this->_line}, near '{" . $tokens->getSnippetAsString(0, 0) . "' <- there", 0, E_ERROR, $this->_name, $this->_line, $e);
|
||||
throw new SecurityException($e->getMessage() . " in {$this->_name} line {$this->_line}, near '{" . $tokens->getSnippetAsString(0, 0) . "' <- there", 0, E_ERROR, $this->_name, $this->_line, $e);
|
||||
} catch (\Exception $e) {
|
||||
throw new CompileException($e->getMessage() . " in {$this} line {$this->_line}, near '{" . $tokens->getSnippetAsString(0, 0) . "' <- there", 0, E_ERROR, $this->_name, $this->_line, $e);
|
||||
throw new CompileException($e->getMessage() . " in {$this->_name} line {$this->_line}, near '{" . $tokens->getSnippetAsString(0, 0) . "' <- there", 0, E_ERROR, $this->_name, $this->_line, $e);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1282,7 +1282,7 @@ class Template extends Render
|
||||
}
|
||||
|
||||
if (!is_string($mods)) { // dynamic modifier
|
||||
$mods = 'call_user_func($tpl->getStorage()->getModifier("' . $mods . '"), ';
|
||||
$mods = 'call_user_func($tpl->getStorage()->getModifier("' . $modifier . '"), ';
|
||||
} else {
|
||||
$mods .= "(";
|
||||
}
|
||||
@ -1353,6 +1353,7 @@ class Template extends Render
|
||||
$macro = false;
|
||||
if (isset($this->macros[$name])) {
|
||||
$macro = $this->macros[$name];
|
||||
$recursive = $macro['recursive'];
|
||||
} else {
|
||||
foreach ($this->_stack as $scope) {
|
||||
if ($scope->name == 'macro' && $scope['name'] == $name) { // invoke recursive
|
||||
@ -1378,8 +1379,10 @@ class Template extends Render
|
||||
}
|
||||
}
|
||||
if ($recursive) {
|
||||
$recursive['recursive'] = true;
|
||||
return '$tpl->getMacro("' . $name . '")->__invoke(' . Compiler::toArray($args) . ', $tpl);';
|
||||
$body = '$tpl->getMacro("' . $name . '")->__invoke($tpl);';
|
||||
if($recursive instanceof Scope) {
|
||||
$recursive['recursive'] = true;
|
||||
}
|
||||
} else {
|
||||
$vars = $this->tmpVar();
|
||||
return $vars . ' = $var; $var = ' . Compiler::toArray($args) . ';' . PHP_EOL . '?>' .
|
||||
|
Loading…
Reference in New Issue
Block a user