Skip to content
This repository has been archived by the owner on Jan 21, 2020. It is now read-only.

Commit

Permalink
Merge 7c2f737 into 6d23d46
Browse files Browse the repository at this point in the history
  • Loading branch information
robopuff committed May 17, 2017
2 parents 6d23d46 + 7c2f737 commit 5f49809
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 2 deletions.
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@
"league/plates": "^3.3",
"zendframework/zend-expressive-helpers": "^2.2 || ^3.0.1 || ^4.0",
"zendframework/zend-expressive-router": "^1.3.2 || ^2.1",
"zendframework/zend-expressive-template": "^1.0.4"
"zendframework/zend-expressive-template": "^1.0.4",
"zendframework/zend-escaper": "^2.5"
},
"require-dev": {
"malukenho/docheader": "^0.1.5",
Expand Down
46 changes: 45 additions & 1 deletion composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

42 changes: 42 additions & 0 deletions src/Extension/EscaperExtension.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php
/**
* @see https://github.com/zendframework/zend-expressive-platesrenderer for the canonical source repository
* @copyright Copyright (c) 2016-2017 Zend Technologies USA Inc. (http://www.zend.com)
* @license https://github.com/zendframework/zend-expressive-platesrenderer/blob/master/LICENSE.md New BSD License
*/

namespace Zend\Expressive\Plates\Extension;

use League\Plates\Engine;
use League\Plates\Extension\ExtensionInterface;
use Zend\Escaper\Escaper;
use Zend\Escaper\Exception\InvalidArgumentException;

class EscaperExtension implements ExtensionInterface
{
/**
* Register functions with the Plates engine.
*
* Registers:
*
* - escapeHtml($string) : string
* - escapeHtmlAttr($string) : string
* - escapeJs($string) : string
* - escapeCss($string) : string
* - escapeUrl($string) : string
*
* @param Engine $engine
* @return void
* @throws InvalidArgumentException
*/
public function register(Engine $engine)
{
$escaper = new Escaper();

$engine->registerFunction('escapeHtml', [$escaper, 'escapeHtml']);
$engine->registerFunction('escapeHtmlAttr', [$escaper, 'escapeHtmlAttr']);
$engine->registerFunction('escapeJs', [$escaper, 'escapeJs']);
$engine->registerFunction('escapeCss', [$escaper, 'escapeCss']);
$engine->registerFunction('escapeUrl', [$escaper, 'escapeUrl']);
}
}
41 changes: 41 additions & 0 deletions test/Extension/EscaperExtensionTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
<?php

namespace ZendTest\Expressive\Plates\Extension;

use League\Plates\Engine;
use PHPUnit\Framework\TestCase;
use Prophecy\Argument;
use Zend\Escaper\Escaper;
use Zend\Expressive\Plates\Extension\EscaperExtension;

class EscaperExtensionTest extends TestCase
{
public function testRegistersEscaperFunctionsWithEngine()
{
$extension = new EscaperExtension();

$engine = $this->prophesize(Engine::class);
$engine
->registerFunction('escapeHtml', Argument::that(function ($argument) {
return is_array($argument) && $argument[0] instanceof Escaper && $argument[1] === 'escapeHtml';
}))->shouldBeCalled();
$engine
->registerFunction('escapeHtmlAttr', Argument::that(function ($argument) {
return is_array($argument) && $argument[0] instanceof Escaper && $argument[1] === 'escapeHtmlAttr';
}))->shouldBeCalled();
$engine
->registerFunction('escapeJs', Argument::that(function ($argument) {
return is_array($argument) && $argument[0] instanceof Escaper && $argument[1] === 'escapeJs';
}))->shouldBeCalled();
$engine
->registerFunction('escapeCss', Argument::that(function ($argument) {
return is_array($argument) && $argument[0] instanceof Escaper && $argument[1] === 'escapeCss';
}))->shouldBeCalled();
$engine
->registerFunction('escapeUrl', Argument::that(function ($argument) {
return is_array($argument) && $argument[0] instanceof Escaper && $argument[1] === 'escapeUrl';
}))->shouldBeCalled();

$extension->register($engine->reveal());
}
}

0 comments on commit 5f49809

Please sign in to comment.