mirror of
https://github.com/Mibew/handlebars.php-helpers.git
synced 2025-04-14 08:39:30 +03:00
Initial commit
This commit is contained in:
commit
e341787d48
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
# Exclude dependencies
|
||||
vendor
|
||||
|
||||
# Exclude composer's files
|
||||
composer.phar
|
||||
composer.lock
|
21
LICENSE
Normal file
21
LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 Dmitriy Simushev <simushevds@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
46
README.md
Normal file
46
README.md
Normal file
@ -0,0 +1,46 @@
|
||||
# Handlebars.php Helpers Set
|
||||
|
||||
Provides a set of helpers for [Handlebars.php](https://github.com/XaminProject/handlebars.php) template engine.
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
Simply add a dependency on `justblackbird/handlebars.php-helpers` to your
|
||||
project's `composer.json` file if you use [Composer](http://getcomposer.org/) to
|
||||
manage the dependencies of your project.
|
||||
|
||||
|
||||
## Usage
|
||||
|
||||
To use all helpers in your templates just create an instance of helpers set and
|
||||
attach it to Handlebars engine.
|
||||
|
||||
```php
|
||||
$helpers = new \JustBlackBird\HandlebarsHelpers\Helpers();
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
```
|
||||
|
||||
Want to use only subset of helpers? Fine. Just create an instance of appropriate
|
||||
helpers set and attach it to Handlebars engine. Here is an example for Date
|
||||
helpers:
|
||||
|
||||
```php
|
||||
$helpers = new \JustBlackBird\HandlebarsHelpers\Date\Helpers();
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
```
|
||||
|
||||
Want to use only chosen helpers? No problem. Just add them manually to your
|
||||
helpers set:
|
||||
|
||||
```php
|
||||
$engine = new \Handlebars\Handlebars();
|
||||
$engine->getHelpers()->add(
|
||||
'ifEqual',
|
||||
new \JustBlackBird\HandlebarsHelpers\Comparison\IfEqualHelper()
|
||||
);
|
||||
```
|
||||
|
||||
|
||||
## License
|
||||
|
||||
[MIT](http://opensource.org/licenses/MIT) (c) Dmitriy Simushev
|
29
composer.json
Normal file
29
composer.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"name": "justblackbird/handlebars.php-helpers",
|
||||
"version": "0.1.0",
|
||||
"description": "A set of helpers for Handlebars.php template engine.",
|
||||
"type": "library",
|
||||
"license": "MIT",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Dmitriy Simushev",
|
||||
"email": "simushevds@gmail.com"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/JustBlackBird/handlebars.php-helpers/issues",
|
||||
"source": "https://github.com/JustBlackBird/handlebars.php-helpers"
|
||||
},
|
||||
"require": {
|
||||
"xamin/handlebars.php": "0.10.*"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "~4.4",
|
||||
"squizlabs/php_codesniffer": "~2.0"
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"JustBlackBird\\HandlebarsHelpers\\": "src/"
|
||||
}
|
||||
}
|
||||
}
|
9
phpunit.xml.dist
Normal file
9
phpunit.xml.dist
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<phpunit bootstrap="vendor/autoload.php" colors="true">
|
||||
<testsuites>
|
||||
<testsuite name="Handlebars.php Helpers Test Suite">
|
||||
<directory>tests</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
</phpunit>
|
34
src/Comparison/Helpers.php
Normal file
34
src/Comparison/Helpers.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Comparison;
|
||||
|
||||
use Handlebars\Helpers as BaseHelpers;
|
||||
|
||||
/**
|
||||
* Contains all comparison related helpers.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class Helpers extends BaseHelpers
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function addDefaultHelpers()
|
||||
{
|
||||
parent::addDefaultHelpers();
|
||||
|
||||
$this->add('ifEqual', new IfEqualHelper());
|
||||
$this->add('ifEven', new IfEvenHelper());
|
||||
$this->add('ifOdd', new IfOddHelper());
|
||||
$this->add('unlessEqual', new UnlessEqualHelper());
|
||||
}
|
||||
}
|
60
src/Comparison/IfEqualHelper.php
Normal file
60
src/Comparison/IfEqualHelper.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Comparison;
|
||||
|
||||
use Handlebars\Context;
|
||||
use Handlebars\Helper as HelperInterface;
|
||||
use Handlebars\Template;
|
||||
|
||||
/**
|
||||
* Conditional helper that checks if two values are equal or not.
|
||||
*
|
||||
* Example of usage:
|
||||
* ```handlebars
|
||||
* {{#ifEqual first second}}
|
||||
* The first argument is equal to the second one.
|
||||
* {{else}}
|
||||
* The arguments are not equal.
|
||||
* {{/ifEqual}}
|
||||
* ```
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
60
src/Comparison/IfEvenHelper.php
Normal file
60
src/Comparison/IfEvenHelper.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Comparison;
|
||||
|
||||
use Handlebars\Context;
|
||||
use Handlebars\Helper as HelperInterface;
|
||||
use Handlebars\Template;
|
||||
|
||||
/**
|
||||
* Conditional helper that checks if specified argument is even or not.
|
||||
*
|
||||
* Example of usage:
|
||||
* ```handlebars
|
||||
* {{#ifEven value}}
|
||||
* The value is even.
|
||||
* {{else}}
|
||||
* The value is odd.
|
||||
* {{/ifEven}}
|
||||
* ```
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
60
src/Comparison/IfOddHelper.php
Normal file
60
src/Comparison/IfOddHelper.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Comparison;
|
||||
|
||||
use Handlebars\Context;
|
||||
use Handlebars\Helper as HelperInterface;
|
||||
use Handlebars\Template;
|
||||
|
||||
/**
|
||||
* Conditional helper that checks if specified argument is odd or not.
|
||||
*
|
||||
* Example of usage:
|
||||
* ```handlebars
|
||||
* {{#ifOdd value}}
|
||||
* The value is odd.
|
||||
* {{else}}
|
||||
* The value is even.
|
||||
* {{/ifOdd}}
|
||||
* ```
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
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;
|
||||
}
|
||||
}
|
60
src/Comparison/UnlessEqualHelper.php
Normal file
60
src/Comparison/UnlessEqualHelper.php
Normal file
@ -0,0 +1,60 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Comparison;
|
||||
|
||||
use Handlebars\Context;
|
||||
use Handlebars\Helper as HelperInterface;
|
||||
use Handlebars\Template;
|
||||
|
||||
/**
|
||||
* Conditional helper that checks if two values are equal or not.
|
||||
*
|
||||
* Example of usage:
|
||||
* ```handlebars
|
||||
* {{#unlessEqual first second}}
|
||||
* The first argument is equal to the second one.
|
||||
* {{else}}
|
||||
* The arguments are not equal.
|
||||
* {{/unlessEqual}}
|
||||
* ```
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class UnlessEqualHelper 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(
|
||||
'"unlessEqual" 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;
|
||||
}
|
||||
}
|
58
src/Date/FormatDateHelper.php
Normal file
58
src/Date/FormatDateHelper.php
Normal file
@ -0,0 +1,58 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Date;
|
||||
|
||||
use Handlebars\Context;
|
||||
use Handlebars\Helper as HelperInterface;
|
||||
use Handlebars\Template;
|
||||
|
||||
/**
|
||||
* Format date using PHP's strftime format string.
|
||||
*
|
||||
* Usage:
|
||||
* ```handlebars
|
||||
* {{formatDate time format}}
|
||||
* ```
|
||||
*
|
||||
* Arguments:
|
||||
* - "time": Can be either an integer timestamp or an instance of \DateTime
|
||||
* class.
|
||||
* - "format": Format string. See
|
||||
* {@link http://php.net/manual/en/function.strftime.php} for details about
|
||||
* placeholders.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class FormatDateHelper 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(
|
||||
'"formatDate" helper expects exactly two arguments.'
|
||||
);
|
||||
}
|
||||
|
||||
$raw_time = $context->get($parsed_args[0]);
|
||||
if ($raw_time instanceof \DateTime) {
|
||||
$timestamp = $raw_time->getTimestamp();
|
||||
} else {
|
||||
$timestamp = intval($raw_time);
|
||||
}
|
||||
$format = $context->get($parsed_args[1]);
|
||||
|
||||
return strftime($format, $timestamp);
|
||||
}
|
||||
}
|
31
src/Date/Helpers.php
Normal file
31
src/Date/Helpers.php
Normal file
@ -0,0 +1,31 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Date;
|
||||
|
||||
use Handlebars\Helpers as BaseHelpers;
|
||||
|
||||
/**
|
||||
* Contains all date related helpers.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class Helpers extends BaseHelpers
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function addDefaultHelpers()
|
||||
{
|
||||
parent::addDefaultHelpers();
|
||||
|
||||
$this->add('formatDate', new FormatDateHelper());
|
||||
}
|
||||
}
|
38
src/Helpers.php
Normal file
38
src/Helpers.php
Normal file
@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers;
|
||||
|
||||
use Handlebars\Helpers as BaseHelpers;
|
||||
|
||||
/**
|
||||
* Contains all helpers.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class Helpers extends BaseHelpers
|
||||
{
|
||||
/**
|
||||
* {@inheritdoc}
|
||||
*/
|
||||
protected function addDefaultHelpers()
|
||||
{
|
||||
parent::addDefaultHelpers();
|
||||
|
||||
// Date helpers
|
||||
$this->add('formatDate', new Date\FormatDateHelper());
|
||||
|
||||
// Comparison helpers
|
||||
$this->add('ifEqual', new Comparison\IfEqualHelper());
|
||||
$this->add('ifEven', new Comparison\IfEvenHelper());
|
||||
$this->add('ifOdd', new Comparison\IfOddHelper());
|
||||
$this->add('unlessEqual', new Comparison\UnlessEqualHelper());
|
||||
}
|
||||
}
|
47
tests/Comparison/HelpersTest.php
Normal file
47
tests/Comparison/HelpersTest.php
Normal file
@ -0,0 +1,47 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Tests\Comparison;
|
||||
|
||||
use JustBlackBird\HandlebarsHelpers\Comparison\Helpers;
|
||||
|
||||
/**
|
||||
* Test class for Comparison Helpers Set.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class HelpersTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Tests that all helpers in the set exist and have valid classes.
|
||||
*
|
||||
* @dataProvider helpersProvider
|
||||
*/
|
||||
public function testHelper($name, $class)
|
||||
{
|
||||
$helpers = new Helpers();
|
||||
|
||||
$this->assertTrue($helpers->has($name), sprintf('There is no "%s" helper', $name));
|
||||
$this->assertInstanceOf($class, $helpers->{$name});
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testHelper method.
|
||||
*/
|
||||
public function helpersProvider()
|
||||
{
|
||||
return array(
|
||||
array('ifEqual', '\\JustBlackBird\\HandlebarsHelpers\\Comparison\\IfEqualHelper'),
|
||||
array('ifEven', '\\JustBlackBird\\HandlebarsHelpers\\Comparison\\IfEvenHelper'),
|
||||
array('ifOdd', '\\JustBlackBird\\HandlebarsHelpers\\Comparison\\IfOddHelper'),
|
||||
array('unlessEqual', '\\JustBlackBird\\HandlebarsHelpers\\Comparison\\UnlessEqualHelper'),
|
||||
);
|
||||
}
|
||||
}
|
85
tests/Comparison/IfEqualHelperTest.php
Normal file
85
tests/Comparison/IfEqualHelperTest.php
Normal file
@ -0,0 +1,85 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Tests\Comparison;
|
||||
|
||||
use JustBlackBird\HandlebarsHelpers\Comparison\IfEqualHelper;
|
||||
|
||||
/**
|
||||
* Test class for "ifEqual" helper.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class IfEqualHelperTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Tests conditions work as expected.
|
||||
*
|
||||
* @dataProvider conditionProvider
|
||||
*/
|
||||
public function testCondition($left, $right, $is_equal)
|
||||
{
|
||||
$helpers = new \Handlebars\Helpers(array('ifEqual' => new IfEqualHelper()));
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
|
||||
$this->assertEquals(
|
||||
$engine->render(
|
||||
'{{#ifEqual left right}}true{{else}}false{{/ifEqual}}',
|
||||
array('left' => $left, 'right' => $right)
|
||||
),
|
||||
$is_equal ? 'true' : 'false'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testCondition method.
|
||||
*/
|
||||
public function conditionProvider()
|
||||
{
|
||||
return array(
|
||||
// Same values
|
||||
array(123, 123, true),
|
||||
// Equal values but with different types
|
||||
array(123, "123", true),
|
||||
// One more type convertion check
|
||||
array(0, false, true),
|
||||
// Different values
|
||||
array(123, false, false),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that exception is thrown if wrong number of arguments is used.
|
||||
*
|
||||
* @expectedException InvalidArgumentException
|
||||
* @dataProvider wrongArgumentsProvider
|
||||
*/
|
||||
public function testArgumentsCount($template)
|
||||
{
|
||||
$helpers = new \Handlebars\Helpers(array('ifEqual' => new IfEqualHelper()));
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
|
||||
$engine->render($template, array());
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testArgumentsCount method.
|
||||
*/
|
||||
public function wrongArgumentsProvider()
|
||||
{
|
||||
return array(
|
||||
// Not enough arguments
|
||||
array('{{#ifEqual}}yes{{else}}no{{/ifEqual}}'),
|
||||
array('{{#ifEqual 5}}yes{{else}}no{{/ifEqual}}'),
|
||||
// Too much arguments
|
||||
array('{{#ifEqual 2 4 8}}yes{{else}}no{{/ifEqual}}'),
|
||||
);
|
||||
}
|
||||
}
|
86
tests/Comparison/IfEvenHelperTest.php
Normal file
86
tests/Comparison/IfEvenHelperTest.php
Normal file
@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Tests\Comparison;
|
||||
|
||||
use JustBlackBird\HandlebarsHelpers\Comparison\IfEvenHelper;
|
||||
|
||||
/**
|
||||
* Test class for "ifEven" helper.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class IfEventHelperTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Tests conditions work as expected.
|
||||
*
|
||||
* @dataProvider conditionProvider
|
||||
*/
|
||||
public function testCondition($value, $is_even)
|
||||
{
|
||||
$helpers = new \Handlebars\Helpers(array('ifEven' => new IfEvenHelper()));
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
|
||||
$this->assertEquals(
|
||||
$engine->render(
|
||||
'{{#ifEven value}}true{{else}}false{{/ifEven}}',
|
||||
array('value' => $value)
|
||||
),
|
||||
$is_even ? 'true' : 'false'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testCondition method.
|
||||
*/
|
||||
public function conditionProvider()
|
||||
{
|
||||
return array(
|
||||
// Even values but with different types
|
||||
array(2, true),
|
||||
array("8", true),
|
||||
// Zero is even number
|
||||
array(0, true),
|
||||
// Null should be treated as zero so it's an even value too.
|
||||
array(null, true),
|
||||
// Odd values with different types
|
||||
array(1, false),
|
||||
array("17", false),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that exception is thrown if wrong number of arguments is used.
|
||||
*
|
||||
* @expectedException InvalidArgumentException
|
||||
* @dataProvider wrongArgumentsProvider
|
||||
*/
|
||||
public function testArgumentsCount($template)
|
||||
{
|
||||
$helpers = new \Handlebars\Helpers(array('ifEven' => new IfEvenHelper()));
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
|
||||
$engine->render($template, array());
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testArgumentsCount method.
|
||||
*/
|
||||
public function wrongArgumentsProvider()
|
||||
{
|
||||
return array(
|
||||
// Not enough arguments
|
||||
array('{{#ifEven}}yes{{else}}no{{/ifEven}}'),
|
||||
// Too much arguments
|
||||
array('{{#ifEven 2 4}}yes{{else}}no{{/ifEven}}'),
|
||||
);
|
||||
}
|
||||
}
|
86
tests/Comparison/IfOddHelperTest.php
Normal file
86
tests/Comparison/IfOddHelperTest.php
Normal file
@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Tests\Comparison;
|
||||
|
||||
use JustBlackBird\HandlebarsHelpers\Comparison\IfOddHelper;
|
||||
|
||||
/**
|
||||
* Test class for "ifOdd" helper.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class IfOddHelperTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Tests conditions work as expected.
|
||||
*
|
||||
* @dataProvider conditionProvider
|
||||
*/
|
||||
public function testCondition($value, $is_even)
|
||||
{
|
||||
$helpers = new \Handlebars\Helpers(array('ifOdd' => new IfOddHelper()));
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
|
||||
$this->assertEquals(
|
||||
$engine->render(
|
||||
'{{#ifOdd value}}false{{else}}true{{/ifOdd}}',
|
||||
array('value' => $value)
|
||||
),
|
||||
$is_even ? 'true' : 'false'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testCondition method.
|
||||
*/
|
||||
public function conditionProvider()
|
||||
{
|
||||
return array(
|
||||
// Even values but with different types
|
||||
array(2, true),
|
||||
array("8", true),
|
||||
// Zero is even number
|
||||
array(0, true),
|
||||
// Null should be treated as zero so it's an even value too.
|
||||
array(null, true),
|
||||
// Odd values with different types
|
||||
array(1, false),
|
||||
array("17", false),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that exception is thrown if wrong number of arguments is used.
|
||||
*
|
||||
* @expectedException InvalidArgumentException
|
||||
* @dataProvider wrongArgumentsProvider
|
||||
*/
|
||||
public function testArgumentsCount($template)
|
||||
{
|
||||
$helpers = new \Handlebars\Helpers(array('ifOdd' => new IfOddHelper()));
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
|
||||
$engine->render($template, array());
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testArgumentsCount method.
|
||||
*/
|
||||
public function wrongArgumentsProvider()
|
||||
{
|
||||
return array(
|
||||
// Not enough arguments
|
||||
array('{{#ifOdd}}yes{{else}}no{{/ifOdd}}'),
|
||||
// Too much arguments
|
||||
array('{{#ifOdd 2 4}}yes{{else}}no{{/ifOdd}}'),
|
||||
);
|
||||
}
|
||||
}
|
84
tests/Comparison/UnlessEqualHelperTest.php
Normal file
84
tests/Comparison/UnlessEqualHelperTest.php
Normal file
@ -0,0 +1,84 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Tests\Comparison;
|
||||
|
||||
use JustBlackBird\HandlebarsHelpers\Comparison\UnlessEqualHelper;
|
||||
|
||||
/**
|
||||
* Test class for "unlessEqual" helper.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class UnlessEqualHelperTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Tests conditions work as expected.
|
||||
*
|
||||
* @dataProvider conditionProvider
|
||||
*/
|
||||
public function testCondition($left, $right, $is_equal)
|
||||
{
|
||||
$helpers = new \Handlebars\Helpers(array('unlessEqual' => new UnlessEqualHelper()));
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
|
||||
$this->assertEquals(
|
||||
$engine->render(
|
||||
'{{#unlessEqual left right}}false{{else}}true{{/unlessEqual}}',
|
||||
array('left' => $left, 'right' => $right)
|
||||
),
|
||||
$is_equal ? 'true' : 'false'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testCondition method.
|
||||
*/
|
||||
public function conditionProvider()
|
||||
{
|
||||
return array(
|
||||
// Same values
|
||||
array(123, 123, true),
|
||||
// Equal values but with different types
|
||||
array(123, "123", true),
|
||||
// One more type convertion check
|
||||
array(0, false, true),
|
||||
// Different values
|
||||
array(123, false, false),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that exception is thrown if wrong number of arguments is used.
|
||||
*
|
||||
* @expectedException InvalidArgumentException
|
||||
* @dataProvider wrongArgumentsProvider
|
||||
*/
|
||||
public function testArgumentsCount($template)
|
||||
{
|
||||
$helpers = new \Handlebars\Helpers(array('unlessEqual' => new UnlessEqualHelper()));
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
|
||||
$engine->render($template, array());
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testArgumentsCount method.
|
||||
*/
|
||||
public function wrongArgumentsProvider()
|
||||
{
|
||||
return array(
|
||||
// Not enough arguments
|
||||
array('{{#unlessEqual}}no{{else}}yes{{/unlessEqual}}'),
|
||||
// Too much arguments
|
||||
array('{{#unlessEqual 2 4 8}}no{{else}}yes{{/unlessEqual}}'),
|
||||
);
|
||||
}
|
||||
}
|
86
tests/Date/FormatDateHelperTest.php
Normal file
86
tests/Date/FormatDateHelperTest.php
Normal file
@ -0,0 +1,86 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Tests\Date;
|
||||
|
||||
use JustBlackBird\HandlebarsHelpers\Date\FormatDateHelper;
|
||||
|
||||
/**
|
||||
* Test class for "formatDate" helper.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class FormatDateHelperTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Tests that date is formatted properly.
|
||||
*
|
||||
* @dataProvider formatProvider
|
||||
*/
|
||||
public function testFormat($time, $format, $result)
|
||||
{
|
||||
$helpers = new \Handlebars\Helpers(array('formatDate' => new FormatDateHelper()));
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
|
||||
$this->assertEquals($engine->render(
|
||||
'{{formatDate time format}}',
|
||||
array(
|
||||
'time' => $time,
|
||||
'format' => $format,
|
||||
)
|
||||
), $result);
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testFormat method.
|
||||
*/
|
||||
public function formatProvider()
|
||||
{
|
||||
$now = new \DateTime();
|
||||
$format = "%H:%M %d-%m-%Y";
|
||||
$expected = strftime($format, $now->getTimestamp());
|
||||
|
||||
return array(
|
||||
// DateTime object
|
||||
array($now, $format, $expected),
|
||||
// Integer timestamp
|
||||
array($now->getTimestamp(), $format, $expected),
|
||||
// String timestamp
|
||||
array((string)$now->getTimestamp(), $format, $expected),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests that exception is thrown if wrong number of arguments is used.
|
||||
*
|
||||
* @expectedException InvalidArgumentException
|
||||
* @dataProvider wrongArgumentsProvider
|
||||
*/
|
||||
public function testArgumentsCount($template)
|
||||
{
|
||||
$helpers = new \Handlebars\Helpers(array('formatDate' => new FormatDateHelper()));
|
||||
$engine = new \Handlebars\Handlebars(array('helpers' => $helpers));
|
||||
|
||||
$engine->render($template, array());
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for FormatDateHelperTest::testArgumentsCount() test.
|
||||
*/
|
||||
public function wrongArgumentsProvider()
|
||||
{
|
||||
return array(
|
||||
// Not enough arguments
|
||||
array('{{formatDate 658983600}}'),
|
||||
// Too much arguments
|
||||
array('{{formatDate 658983600 "%F" "test"}}'),
|
||||
);
|
||||
}
|
||||
}
|
44
tests/Date/HelpersTest.php
Normal file
44
tests/Date/HelpersTest.php
Normal file
@ -0,0 +1,44 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Tests\Date;
|
||||
|
||||
use JustBlackBird\HandlebarsHelpers\Date\Helpers;
|
||||
|
||||
/**
|
||||
* Test class for Date Helpers Set.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class HelpersTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Tests that all helpers in the set exist and have valid classes.
|
||||
*
|
||||
* @dataProvider helpersProvider
|
||||
*/
|
||||
public function testHelper($name, $class)
|
||||
{
|
||||
$helpers = new Helpers();
|
||||
|
||||
$this->assertTrue($helpers->has($name), sprintf('There is no "%s" helper', $name));
|
||||
$this->assertInstanceOf($class, $helpers->{$name});
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testHelper method.
|
||||
*/
|
||||
public function helpersProvider()
|
||||
{
|
||||
return array(
|
||||
array('formatDate', '\\JustBlackBird\\HandlebarsHelpers\\Date\\FormatDateHelper'),
|
||||
);
|
||||
}
|
||||
}
|
51
tests/HelpersTest.php
Normal file
51
tests/HelpersTest.php
Normal file
@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/*
|
||||
* This file is part of Handlebars.php Helpers Set
|
||||
*
|
||||
* (c) Dmitriy Simushev <simushevds@gmail.com>
|
||||
*
|
||||
* For the full copyright and license information, please view the LICENSE
|
||||
* file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
namespace JustBlackBird\HandlebarsHelpers\Tests;
|
||||
|
||||
use JustBlackBird\HandlebarsHelpers\Helpers;
|
||||
|
||||
/**
|
||||
* Test class for Global Helpers Set.
|
||||
*
|
||||
* @author Dmitriy Simushev <simushevds@gmail.com>
|
||||
*/
|
||||
class HelpersTest extends \PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Tests that all helpers in the set exist and have valid classes.
|
||||
*
|
||||
* @dataProvider helpersProvider
|
||||
*/
|
||||
public function testHelper($name, $class)
|
||||
{
|
||||
$helpers = new Helpers();
|
||||
|
||||
$this->assertTrue($helpers->has($name), sprintf('There is no "%s" helper', $name));
|
||||
$this->assertInstanceOf($class, $helpers->{$name});
|
||||
}
|
||||
|
||||
/**
|
||||
* A data provider for testHelper method.
|
||||
*/
|
||||
public function helpersProvider()
|
||||
{
|
||||
return array(
|
||||
// Date helpers
|
||||
array('formatDate', '\\JustBlackBird\\HandlebarsHelpers\\Date\\FormatDateHelper'),
|
||||
|
||||
// Comparison helpers
|
||||
array('ifEqual', '\\JustBlackBird\\HandlebarsHelpers\\Comparison\\IfEqualHelper'),
|
||||
array('ifEven', '\\JustBlackBird\\HandlebarsHelpers\\Comparison\\IfEvenHelper'),
|
||||
array('ifOdd', '\\JustBlackBird\\HandlebarsHelpers\\Comparison\\IfOddHelper'),
|
||||
array('unlessEqual', '\\JustBlackBird\\HandlebarsHelpers\\Comparison\\UnlessEqualHelper'),
|
||||
);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user