From a441bed2a234a10137f1f7126bb7e179aa25960d Mon Sep 17 00:00:00 2001 From: Dmitriy Simushev Date: Tue, 16 Dec 2014 16:00:20 +0000 Subject: [PATCH] Move common helpers to a separate composer package --- src/composer.json | 1 + .../classes/Mibew/Handlebars/BlockStorage.php | 77 ----------------- .../Handlebars/Helper/AbstractBlockHelper.php | 43 ---------- .../Mibew/Handlebars/Helper/BlockHelper.php | 60 ------------- .../Handlebars/Helper/CutStringHelper.php | 53 ------------ .../Mibew/Handlebars/Helper/ExtendsHelper.php | 68 --------------- .../Mibew/Handlebars/Helper/IfAnyHelper.php | 84 ------------------- .../Mibew/Handlebars/Helper/IfEqualHelper.php | 67 --------------- .../Mibew/Handlebars/Helper/IfEvenHelper.php | 67 --------------- .../Mibew/Handlebars/Helper/IfOddHelper.php | 67 --------------- .../Handlebars/Helper/IfOverriddenHelper.php | 68 --------------- .../Handlebars/Helper/OverrideHelper.php | 66 --------------- .../Mibew/Handlebars/Helper/RepeatHelper.php | 53 ------------ .../Mibew/Handlebars/Helper/ReplaceHelper.php | 54 ------------ .../Helper/UnlessOverriddenHelper.php | 68 --------------- .../libs/classes/Mibew/Handlebars/Helpers.php | 29 ++++--- 16 files changed, 17 insertions(+), 908 deletions(-) delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/BlockStorage.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/AbstractBlockHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/BlockHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/CutStringHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/ExtendsHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/IfAnyHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/IfEqualHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/IfEvenHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/IfOddHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/IfOverriddenHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/OverrideHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/RepeatHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/ReplaceHelper.php delete mode 100644 src/mibew/libs/classes/Mibew/Handlebars/Helper/UnlessOverriddenHelper.php diff --git a/src/composer.json b/src/composer.json index 4d0b920f..f36a1c5a 100644 --- a/src/composer.json +++ b/src/composer.json @@ -19,6 +19,7 @@ }, "require": { "xamin/handlebars.php": "0.10.*", + "justblackbird/handlebars.php-helpers": "~0.2.1", "symfony/http-foundation": "2.6.*", "symfony/routing": "2.6.*", "symfony/config": "2.6.*", diff --git a/src/mibew/libs/classes/Mibew/Handlebars/BlockStorage.php b/src/mibew/libs/classes/Mibew/Handlebars/BlockStorage.php deleted file mode 100644 index 3d6a7a98..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/BlockStorage.php +++ /dev/null @@ -1,77 +0,0 @@ -blocks[$name]) ? $this->blocks[$name] : false; - } - - /** - * Sets content of a block. - * - * @param string $name Block's name. - * @param string $content Block's content. - */ - public function set($name, $content) - { - $this->blocks[$name] = $content; - } - - /** - * Checks if a block exists in the storage. - * - * @param string $name Block's name - * @return boolean - */ - public function has($name) - { - return isset($this->blocks[$name]); - } - - /** - * Removes block from the storage. - * - * @param string $name Block's name. - */ - public function remove($name) - { - unset($this->blocks[$name]); - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/AbstractBlockHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/AbstractBlockHelper.php deleted file mode 100644 index 4c9c2692..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/AbstractBlockHelper.php +++ /dev/null @@ -1,43 +0,0 @@ -blocksStorage = $storage; - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/BlockHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/BlockHelper.php deleted file mode 100644 index 0d8c6684..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/BlockHelper.php +++ /dev/null @@ -1,60 +0,0 @@ - - * {{#block "blockName"}} - * Default content for the block - * {{/block}} - * - */ -class BlockHelper extends AbstractBlockHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - // Get block name - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) != 1) { - throw new \InvalidArgumentException( - '"block" helper expects exactly one argument.' - ); - } - $block_name = $context->get(array_shift($parsed_args)); - - // If the block is not overridden render and show the default value - if (!$this->blocksStorage->has($block_name)) { - return $template->render($context); - } - - // Show overridden content - return $this->blocksStorage->get($block_name); - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/CutStringHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/CutStringHelper.php deleted file mode 100644 index 6863876c..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/CutStringHelper.php +++ /dev/null @@ -1,53 +0,0 @@ - - * {{cutString string length}} - * - */ -class CutStringHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) != 2) { - throw new \InvalidArgumentException( - '"cutString" helper expects exactly two arguments.' - ); - } - - $string = $context->get($parsed_args[0]); - $length = intval($context->get($parsed_args[1])); - - return substr($string, 0, $length); - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/ExtendsHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/ExtendsHelper.php deleted file mode 100644 index 9f40c86b..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/ExtendsHelper.php +++ /dev/null @@ -1,68 +0,0 @@ - - * {{#extends "parentTemplateName"}} - * {{#override "blockName"}} - * Overridden first block - * {{/override}} - * - * {{#override "anotherBlockName"}} - * Overridden second block - * {{/override}} - * {{/extends}} - * - */ -class ExtendsHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - // Get name of the parent template - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) != 1) { - throw new \InvalidArgumentException( - '"extends" helper expects exactly one argument.' - ); - } - $parent_template = $context->get(array_shift($parsed_args)); - - // Render content inside "extends" block to override blocks - $template->render($context); - - // We need another instance of \Handlebars\Template to render parent - // template. It can be got from Handlebars engine, so get the engine. - $handlebars = $template->getEngine(); - - // Render the parent template - return $handlebars->render($parent_template, $context); - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfAnyHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfAnyHelper.php deleted file mode 100644 index fe9af273..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfAnyHelper.php +++ /dev/null @@ -1,84 +0,0 @@ - - * {{#ifAny first second third}} - * At least one of argument can be threated as "true". - * {{else}} - * All values are "falsy" - * {{/ifAny}} - * - */ -class IfAnyHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) == 0) { - throw new \InvalidArgumentException( - '"ifAny" helper expects at least one argument.' - ); - } - - $condition = false; - foreach ($parsed_args as $parsed_arg) { - $value = $context->get($parsed_arg); - - if ($value instanceof String) { - // We need to get internal string. Casting any object of - // \Handlebars\String will have positive result even for those - // with empty internal strings. - $value = $value->getString(); - } - - if ($value) { - $condition = true; - break; - } - } - - if ($condition) { - $template->setStopToken('else'); - $buffer = $template->render($context); - $template->setStopToken(false); - } else { - $template->setStopToken('else'); - $template->discard(); - $template->setStopToken(false); - $buffer = $template->render($context); - } - - return $buffer; - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfEqualHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfEqualHelper.php deleted file mode 100644 index 99db9855..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfEqualHelper.php +++ /dev/null @@ -1,67 +0,0 @@ - - * {{#ifEqual first second}} - * The first argument is equal to the second one. - * {{else}} - * The arguments are not equal. - * {{/ifEqual}} - * - */ -class IfEqualHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) != 2) { - throw new \InvalidArgumentException( - '"ifEqual" helper expects exactly two arguments.' - ); - } - - $condition = ($context->get($parsed_args[0]) == $context->get($parsed_args[1])); - - if ($condition) { - $template->setStopToken('else'); - $buffer = $template->render($context); - $template->setStopToken(false); - } else { - $template->setStopToken('else'); - $template->discard(); - $template->setStopToken(false); - $buffer = $template->render($context); - } - - return $buffer; - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfEvenHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfEvenHelper.php deleted file mode 100644 index c63a4ec8..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfEvenHelper.php +++ /dev/null @@ -1,67 +0,0 @@ - - * {{#ifEven value}} - * The value is even. - * {{else}} - * The value is odd. - * {{/ifEven}} - * - */ -class IfEvenHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) != 1) { - throw new \InvalidArgumentException( - '"ifEven" helper expects exactly one argument.' - ); - } - - $condition = ($context->get($parsed_args[0]) % 2 == 0); - - if ($condition) { - $template->setStopToken('else'); - $buffer = $template->render($context); - $template->setStopToken(false); - } else { - $template->setStopToken('else'); - $template->discard(); - $template->setStopToken(false); - $buffer = $template->render($context); - } - - return $buffer; - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfOddHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfOddHelper.php deleted file mode 100644 index c4d6c06a..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfOddHelper.php +++ /dev/null @@ -1,67 +0,0 @@ - - * {{#ifOdd value}} - * The value is odd. - * {{else}} - * The value is even. - * {{/ifOdd}} - * - */ -class IfOddHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) != 1) { - throw new \InvalidArgumentException( - '"ifOdd" helper expects exactly one argument.' - ); - } - - $condition = ($context->get($parsed_args[0]) % 2 == 1); - - if ($condition) { - $template->setStopToken('else'); - $buffer = $template->render($context); - $template->setStopToken(false); - } else { - $template->setStopToken('else'); - $template->discard(); - $template->setStopToken(false); - $buffer = $template->render($context); - } - - return $buffer; - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfOverriddenHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfOverriddenHelper.php deleted file mode 100644 index d62cd413..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/IfOverriddenHelper.php +++ /dev/null @@ -1,68 +0,0 @@ - - * {{#ifOverridden "blockName"}} - * The block was overridden - * {{else}} - * The block was not overridden - * {{/ifOverridden}} - * - */ -class IfOverriddenHelper extends AbstractBlockHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - // Get block name - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) != 1) { - throw new \InvalidArgumentException( - '"ifOverridden" helper expects exactly one argument.' - ); - } - $block_name = $context->get(array_shift($parsed_args)); - - // Check condition and render blocks - if ($this->blocksStorage->has($block_name)) { - $template->setStopToken('else'); - $buffer = $template->render($context); - $template->setStopToken(false); - } else { - $template->setStopToken('else'); - $template->discard(); - $template->setStopToken(false); - $buffer = $template->render($context); - } - - return $buffer; - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/OverrideHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/OverrideHelper.php deleted file mode 100644 index 71595b7a..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/OverrideHelper.php +++ /dev/null @@ -1,66 +0,0 @@ - - * {{#extends "parentTemplateName"}} - * {{#override "blockName"}} - * Overridden first block - * {{/override}} - * - * {{#override "anotherBlockName"}} - * Overridden second block - * {{/override}} - * {{/extends}} - * - */ -class OverrideHelper extends AbstractBlockHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - // Get block name - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) != 1) { - throw new \InvalidArgumentException( - '"override" helper expects exactly one argument.' - ); - } - $block_name = $context->get(array_shift($parsed_args)); - - // We need to provide unlimited inheritence level. Rendering is started - // from the deepest level template. If the content is in the block - // storage it is related with the deepest level template. Thus we do not - // need to override it. - if (!$this->blocksStorage->has($block_name)) { - $this->blocksStorage->set($block_name, $template->render($context)); - } - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/RepeatHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/RepeatHelper.php deleted file mode 100644 index 489eb905..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/RepeatHelper.php +++ /dev/null @@ -1,53 +0,0 @@ - - * {{#repeat times}}content to repeat{{/repeat}} - * - */ -class RepeatHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) != 1) { - throw new \InvalidArgumentException( - '"repeat" helper expects exactly one argument.' - ); - } - - $times = intval($context->get($parsed_args[0])); - $string = $template->render($context); - - return str_repeat($string, $times); - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/ReplaceHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/ReplaceHelper.php deleted file mode 100644 index ac7178f8..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/ReplaceHelper.php +++ /dev/null @@ -1,54 +0,0 @@ - - * {{#replace search replacement}}target content{{/replace}} - * - */ -class ReplaceHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) != 2) { - throw new \InvalidArgumentException( - '"replace" helper expects exactly two arguments.' - ); - } - - $search = $context->get($parsed_args[0]); - $replacement = $context->get($parsed_args[1]); - $subject = $template->render($context); - - return str_replace($search, $replacement, $subject); - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helper/UnlessOverriddenHelper.php b/src/mibew/libs/classes/Mibew/Handlebars/Helper/UnlessOverriddenHelper.php deleted file mode 100644 index e3b4c00e..00000000 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helper/UnlessOverriddenHelper.php +++ /dev/null @@ -1,68 +0,0 @@ - - * {{#unlessOverridden "blockName"}} - * The block was not overridden - * {{else}} - * The block was overridden - * {{/unlessOverridden}} - * - */ -class UnlessOverriddenHelper extends AbstractBlockHelper implements HelperInterface -{ - /** - * {@inheritdoc} - */ - public function execute(Template $template, Context $context, $args, $source) - { - // Get block name - $parsed_args = $template->parseArguments($args); - if (count($parsed_args) != 1) { - throw new \InvalidArgumentException( - '"unlessOverridden" helper expects exactly one argument.' - ); - } - $block_name = $context->get(array_shift($parsed_args)); - - // Check condition and render blocks - if (!$this->blocksStorage->has($block_name)) { - $template->setStopToken('else'); - $buffer = $template->render($context); - $template->setStopToken(false); - } else { - $template->setStopToken('else'); - $template->discard(); - $template->setStopToken(false); - $buffer = $template->render($context); - } - - return $buffer; - } -} diff --git a/src/mibew/libs/classes/Mibew/Handlebars/Helpers.php b/src/mibew/libs/classes/Mibew/Handlebars/Helpers.php index 5c856775..95f5bdb4 100644 --- a/src/mibew/libs/classes/Mibew/Handlebars/Helpers.php +++ b/src/mibew/libs/classes/Mibew/Handlebars/Helpers.php @@ -20,6 +20,7 @@ namespace Mibew\Handlebars; use Handlebars\Helpers as BaseHelpers; +use JustBlackBird\HandlebarsHelpers; /** * Handlebars helpers collection. @@ -35,23 +36,25 @@ class Helpers extends BaseHelpers { parent::addDefaultHelpers(); - $blocks = new BlockStorage(); $this->add('l10n', new Helper\L10nHelper()); - $this->add('extends', new Helper\ExtendsHelper()); - $this->add('block', new Helper\BlockHelper($blocks)); - $this->add('override', new Helper\OverrideHelper($blocks)); - $this->add('ifOverridden', new Helper\IfOverriddenHelper($blocks)); - $this->add('unlessOverridden', new Helper\UnlessOverriddenHelper($blocks)); - $this->add('ifEqual', new Helper\IfEqualHelper()); - $this->add('ifAny', new Helper\IfAnyHelper()); - $this->add('ifEven', new Helper\IfEvenHelper()); - $this->add('ifOdd', new Helper\IfOddHelper()); $this->add('generatePagination', new Helper\GeneratePaginationHelper()); - $this->add('repeat', new Helper\RepeatHelper()); - $this->add('replace', new Helper\ReplaceHelper()); $this->add('formatDate', new Helper\FormatDateHelper()); $this->add('formatDateDiff', new Helper\FormatDateDiffHelper()); - $this->add('cutString', new Helper\CutStringHelper()); $this->add('csrfTokenInput', new Helper\CsrfTokenInputHelper()); + + // Use third party helpers + $this->add('ifEqual', new HandlebarsHelpers\Comparison\IfEqualHelper()); + $this->add('ifAny', new HandlebarsHelpers\Comparison\IfAnyHelper()); + $this->add('ifEven', new HandlebarsHelpers\Comparison\IfEvenHelper()); + $this->add('ifOdd', new HandlebarsHelpers\Comparison\IfOddHelper()); + $this->add('repeat', new HandlebarsHelpers\String\RepeatHelper()); + $this->add('replace', new HandlebarsHelpers\String\ReplaceHelper()); + $this->add('cutString', new HandlebarsHelpers\String\TruncateHelper()); + $blocks = new HandlebarsHelpers\Layout\BlockStorage(); + $this->add('extends', new HandlebarsHelpers\Layout\ExtendsHelper($blocks)); + $this->add('block', new HandlebarsHelpers\Layout\BlockHelper($blocks)); + $this->add('override', new HandlebarsHelpers\Layout\OverrideHelper($blocks)); + $this->add('ifOverridden', new HandlebarsHelpers\Layout\IfOverriddenHelper($blocks)); + $this->add('unlessOverridden', new HandlebarsHelpers\Layout\UnlessOverriddenHelper($blocks)); } }