mirror of
https://github.com/fenom-template/fenom.git
synced 2023-08-10 21:13:07 +03:00
Cleanup and reformat code
This commit is contained in:
parent
0e8880faf9
commit
2b1a8652e2
@ -574,7 +574,8 @@ class Fenom
|
|||||||
* @param string $name test name
|
* @param string $name test name
|
||||||
* @param string $code test PHP code. Code may contains placeholder %s, which will be replaced by test-value. For example: is_callable(%s)
|
* @param string $code test PHP code. Code may contains placeholder %s, which will be replaced by test-value. For example: is_callable(%s)
|
||||||
*/
|
*/
|
||||||
public function addTest($name, $code) {
|
public function addTest($name, $code)
|
||||||
|
{
|
||||||
$this->_tests[$name] = $code;
|
$this->_tests[$name] = $code;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -583,7 +584,8 @@ class Fenom
|
|||||||
* @param string $name
|
* @param string $name
|
||||||
* @return string|bool
|
* @return string|bool
|
||||||
*/
|
*/
|
||||||
public function getTest($name) {
|
public function getTest($name)
|
||||||
|
{
|
||||||
return isset($this->_tests[$name]) ? $this->_tests[$name] : false;
|
return isset($this->_tests[$name]) ? $this->_tests[$name] : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -628,7 +628,7 @@ class Compiler
|
|||||||
*/
|
*/
|
||||||
public static function stdFuncParser(Tokenizer $tokens, Tag $tag)
|
public static function stdFuncParser(Tokenizer $tokens, Tag $tag)
|
||||||
{
|
{
|
||||||
return $tag->escape($tag->callback."(" . self::toArray($tag->tpl->parseParams($tokens)) . ', $tpl)');
|
return $tag->escape($tag->callback . "(" . self::toArray($tag->tpl->parseParams($tokens)) . ', $tpl)');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -658,7 +658,7 @@ class Compiler
|
|||||||
$args[] = var_export($param->getDefaultValue(), true);
|
$args[] = var_export($param->getDefaultValue(), true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $tag->escape($tag->callback."(" . implode(", ", $args) . ')');
|
return $tag->escape($tag->callback . "(" . implode(", ", $args) . ')');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -891,7 +891,7 @@ class Compiler
|
|||||||
}
|
}
|
||||||
while ($tokens->is(Tokenizer::MACRO_STRING, T_VARIABLE)) {
|
while ($tokens->is(Tokenizer::MACRO_STRING, T_VARIABLE)) {
|
||||||
$param = $tokens->current();
|
$param = $tokens->current();
|
||||||
if($tokens->is(T_VARIABLE)) {
|
if ($tokens->is(T_VARIABLE)) {
|
||||||
$param = ltrim($param, '$');
|
$param = ltrim($param, '$');
|
||||||
}
|
}
|
||||||
$tokens->next();
|
$tokens->next();
|
||||||
@ -939,7 +939,7 @@ class Compiler
|
|||||||
*/
|
*/
|
||||||
public static function tagRaw(Tokenizer $tokens, Tag $tag)
|
public static function tagRaw(Tokenizer $tokens, Tag $tag)
|
||||||
{
|
{
|
||||||
return 'echo '.$tag->tpl->parseExpr($tokens);
|
return 'echo ' . $tag->tpl->parseExpr($tokens);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -202,7 +202,7 @@ class Render extends \ArrayObject
|
|||||||
public function getMacro($name)
|
public function getMacro($name)
|
||||||
{
|
{
|
||||||
if (empty($this->_macros[$name])) {
|
if (empty($this->_macros[$name])) {
|
||||||
throw new \RuntimeException('macro '.$name.' not found');
|
throw new \RuntimeException('macro ' . $name . ' not found');
|
||||||
}
|
}
|
||||||
return $this->_macros[$name];
|
return $this->_macros[$name];
|
||||||
}
|
}
|
||||||
|
@ -1,153 +0,0 @@
|
|||||||
<?php
|
|
||||||
/*
|
|
||||||
* This file is part of Fenom.
|
|
||||||
*
|
|
||||||
* (c) 2013 Ivan Shalganov
|
|
||||||
*
|
|
||||||
* For the full copyright and license information, please view the license.md
|
|
||||||
* file that was distributed with this source code.
|
|
||||||
*/
|
|
||||||
namespace Fenom;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Scope for blocks tags
|
|
||||||
*
|
|
||||||
* @author Ivan Shalganov <a.cobest@gmail.com>
|
|
||||||
*/
|
|
||||||
class Scope extends \ArrayObject
|
|
||||||
{
|
|
||||||
|
|
||||||
public $line = 0;
|
|
||||||
public $name;
|
|
||||||
public $level = 0;
|
|
||||||
/**
|
|
||||||
* @var Template
|
|
||||||
*/
|
|
||||||
public $tpl;
|
|
||||||
public $is_compiler = true;
|
|
||||||
public $is_closed = false;
|
|
||||||
public $options;
|
|
||||||
private $_action;
|
|
||||||
private $_body;
|
|
||||||
private $_offset;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creating cope
|
|
||||||
*
|
|
||||||
* @param string $name
|
|
||||||
* @param Template $tpl
|
|
||||||
* @param int $line
|
|
||||||
* @param array $action
|
|
||||||
* @param int $level
|
|
||||||
* @param $body
|
|
||||||
*/
|
|
||||||
public function __construct($name, $tpl, $line, $action, $level, &$body)
|
|
||||||
{
|
|
||||||
$this->line = $line;
|
|
||||||
$this->name = $name;
|
|
||||||
$this->tpl = $tpl;
|
|
||||||
$this->_action = $action;
|
|
||||||
$this->level = $level;
|
|
||||||
$this->_body = & $body;
|
|
||||||
$this->_offset = strlen($body);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
* @param string $function
|
|
||||||
*/
|
|
||||||
public function setFuncName($function)
|
|
||||||
{
|
|
||||||
$this["function"] = $function;
|
|
||||||
$this->is_compiler = false;
|
|
||||||
$this->escape = $this->tpl->escape;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Open callback
|
|
||||||
*
|
|
||||||
* @param Tokenizer $tokenizer
|
|
||||||
* @return mixed
|
|
||||||
*/
|
|
||||||
public function open($tokenizer)
|
|
||||||
{
|
|
||||||
return call_user_func($this->_action["open"], $tokenizer, $this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check, has the block this tag
|
|
||||||
*
|
|
||||||
* @param string $tag
|
|
||||||
* @param int $level
|
|
||||||
* @return bool
|
|
||||||
*/
|
|
||||||
public function hasTag($tag, $level)
|
|
||||||
{
|
|
||||||
if (isset($this->_action["tags"][$tag])) {
|
|
||||||
if ($level) {
|
|
||||||
return isset($this->_action["float_tags"][$tag]);
|
|
||||||
} else {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Call tag callback
|
|
||||||
*
|
|
||||||
* @param string $tag
|
|
||||||
* @param Tokenizer $tokenizer
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function tag($tag, $tokenizer)
|
|
||||||
{
|
|
||||||
return call_user_func($this->_action["tags"][$tag], $tokenizer, $this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Close callback
|
|
||||||
*
|
|
||||||
* @param Tokenizer $tokenizer
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function close($tokenizer)
|
|
||||||
{
|
|
||||||
return call_user_func($this->_action["close"], $tokenizer, $this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return content of block
|
|
||||||
*
|
|
||||||
* @throws \LogicException
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function getContent()
|
|
||||||
{
|
|
||||||
return substr($this->_body, $this->_offset);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Cut scope content
|
|
||||||
*
|
|
||||||
* @return string
|
|
||||||
* @throws \LogicException
|
|
||||||
*/
|
|
||||||
public function cutContent()
|
|
||||||
{
|
|
||||||
$content = substr($this->_body, $this->_offset + 1);
|
|
||||||
$this->_body = substr($this->_body, 0, $this->_offset);
|
|
||||||
return $content;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Replace scope content
|
|
||||||
*
|
|
||||||
* @param $new_content
|
|
||||||
*/
|
|
||||||
public function replaceContent($new_content)
|
|
||||||
{
|
|
||||||
$this->cutContent();
|
|
||||||
$this->_body .= $new_content;
|
|
||||||
}
|
|
||||||
}
|
|
@ -10,7 +10,8 @@
|
|||||||
namespace Fenom;
|
namespace Fenom;
|
||||||
|
|
||||||
|
|
||||||
class Tag extends \ArrayObject {
|
class Tag extends \ArrayObject
|
||||||
|
{
|
||||||
const COMPILER = 1;
|
const COMPILER = 1;
|
||||||
const FUNC = 2;
|
const FUNC = 2;
|
||||||
const BLOCK = 4;
|
const BLOCK = 4;
|
||||||
@ -34,17 +35,24 @@ class Tag extends \ArrayObject {
|
|||||||
private $_tags = array();
|
private $_tags = array();
|
||||||
private $_floats = array();
|
private $_floats = array();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create tag entity
|
||||||
|
* @param string $name the tag name
|
||||||
|
* @param Template $tpl current template
|
||||||
|
* @param string $info tag's information
|
||||||
|
* @param string $body template's code
|
||||||
|
*/
|
||||||
public function __construct($name, Template $tpl, $info, &$body)
|
public function __construct($name, Template $tpl, $info, &$body)
|
||||||
{
|
{
|
||||||
$this->tpl = $tpl;
|
$this->tpl = $tpl;
|
||||||
$this->name = $name;
|
$this->name = $name;
|
||||||
$this->line = $tpl->getLine();
|
$this->line = $tpl->getLine();
|
||||||
$this->level = $tpl->getStackSize();
|
$this->level = $tpl->getStackSize();
|
||||||
$this->_body = &$body;
|
$this->_body = & $body;
|
||||||
$this->_offset = strlen($body);
|
$this->_offset = strlen($body);
|
||||||
$this->_type = $info["type"];
|
$this->_type = $info["type"];
|
||||||
|
|
||||||
if($this->_type & self::BLOCK) {
|
if ($this->_type & self::BLOCK) {
|
||||||
$this->_open = $info["open"];
|
$this->_open = $info["open"];
|
||||||
$this->_close = $info["close"];
|
$this->_close = $info["close"];
|
||||||
$this->_tags = isset($info["tags"]) ? $info["tags"] : array();
|
$this->_tags = isset($info["tags"]) ? $info["tags"] : array();
|
||||||
@ -54,16 +62,26 @@ class Tag extends \ArrayObject {
|
|||||||
$this->_open = $info["parser"];
|
$this->_open = $info["parser"];
|
||||||
}
|
}
|
||||||
|
|
||||||
if($this->_type & self::FUNC) {
|
if ($this->_type & self::FUNC) {
|
||||||
$this->callback = $info["function"];
|
$this->callback = $info["function"];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setOption($option) {
|
/**
|
||||||
|
* Set tag option
|
||||||
|
* @param string $option
|
||||||
|
*/
|
||||||
|
public function setOption($option)
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function isClosed() {
|
/**
|
||||||
|
* Check, if the tag closed
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function isClosed()
|
||||||
|
{
|
||||||
return $this->_closed;
|
return $this->_closed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -124,17 +142,21 @@ class Tag extends \ArrayObject {
|
|||||||
*/
|
*/
|
||||||
public function end($tokenizer)
|
public function end($tokenizer)
|
||||||
{
|
{
|
||||||
if($this->_closed) {
|
if ($this->_closed) {
|
||||||
throw new \LogicException("Tag {$this->name} already closed");
|
throw new \LogicException("Tag {$this->name} already closed");
|
||||||
}
|
}
|
||||||
if($this->_close) {
|
if ($this->_close) {
|
||||||
return call_user_func($this->_close, $tokenizer, $this);
|
return call_user_func($this->_close, $tokenizer, $this);
|
||||||
} else {
|
} else {
|
||||||
throw new \LogicException("Сan not use a inline tag {$this->name} as a block");
|
throw new \LogicException("Сan not use a inline tag {$this->name} as a block");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function close() {
|
/**
|
||||||
|
* Forcefully close the tag
|
||||||
|
*/
|
||||||
|
public function close()
|
||||||
|
{
|
||||||
$this->_closed = true;
|
$this->_closed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -173,28 +195,33 @@ class Tag extends \ArrayObject {
|
|||||||
$this->_body .= $new_content;
|
$this->_body .= $new_content;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function escape($code) {
|
public function escape($code)
|
||||||
|
{
|
||||||
return $this->tpl->out($code);
|
return $this->tpl->out($code);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function optLtrim() {
|
public function optLtrim()
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function optRtrim() {
|
public function optRtrim()
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function optTrim() {
|
public function optTrim()
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function optRaw() {
|
public function optRaw()
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function optEscape() {
|
public function optEscape()
|
||||||
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -588,10 +588,10 @@ class Template extends Render
|
|||||||
}
|
}
|
||||||
if ($info = $this->_fenom->getTag($action, $this)) {
|
if ($info = $this->_fenom->getTag($action, $this)) {
|
||||||
$tag = new Tag($action, $this, $info, $this->_body);
|
$tag = new Tag($action, $this, $info, $this->_body);
|
||||||
if($tokens->is(':')) { // parse tag options
|
if ($tokens->is(':')) { // parse tag options
|
||||||
do {
|
do {
|
||||||
$tag->setOption($tokens->next()->need(T_STRING)->getAndNext());
|
$tag->setOption($tokens->next()->need(T_STRING)->getAndNext());
|
||||||
} while($tokens->is(':'));
|
} while ($tokens->is(':'));
|
||||||
}
|
}
|
||||||
$code = $tag->start($tokens);
|
$code = $tag->start($tokens);
|
||||||
if (!$tag->isClosed()) {
|
if (!$tag->isClosed()) {
|
||||||
@ -616,7 +616,8 @@ class Template extends Render
|
|||||||
* Get current template line
|
* Get current template line
|
||||||
* @return int
|
* @return int
|
||||||
*/
|
*/
|
||||||
public function getLine() {
|
public function getLine()
|
||||||
|
{
|
||||||
return $this->_line;
|
return $this->_line;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1307,10 +1308,10 @@ class Template extends Render
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($recursive) {
|
if ($recursive) {
|
||||||
if($recursive instanceof Tag) {
|
if ($recursive instanceof Tag) {
|
||||||
$recursive['recursive'] = true;
|
$recursive['recursive'] = true;
|
||||||
}
|
}
|
||||||
return '$tpl->getMacro("' . $name . '")->__invoke('.Compiler::toArray($args).', $tpl);';
|
return '$tpl->getMacro("' . $name . '")->__invoke(' . Compiler::toArray($args) . ', $tpl);';
|
||||||
} else {
|
} else {
|
||||||
$vars = $this->tmpVar();
|
$vars = $this->tmpVar();
|
||||||
return $vars . ' = $var; $var = ' . Compiler::toArray($args) . ';' . PHP_EOL . '?>' .
|
return $vars . ' = $var; $var = ' . Compiler::toArray($args) . ';' . PHP_EOL . '?>' .
|
||||||
|
Loading…
Reference in New Issue
Block a user