Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 1b5674e

Browse files
committed
merged branch jfsimon/issue-7281 (PR #7348)
This PR was merged into the 2.1 branch. Commits ------- 5ad4bd1 [TwigBridge] now enter/leave scope on Twig_Node_Module fe4cc24 [TwigBridge] fixed fixed scope & trans_default_domain node visitor c5e999a [TwigBridge] fixed non probant tests & added new one Discussion ---------- [TwigBundle] fixes errors with the default domain node visitor & scope | Q | A | ------------- | --- | Bug fix? | yes | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | #7281 --------------------------------------------------------------------------- by Julien-Webgenery at 2013-03-12T16:35:58Z :+1: --------------------------------------------------------------------------- by lennerd at 2013-03-12T16:38:40Z :+1: --------------------------------------------------------------------------- by rc2c at 2013-03-12T16:53:04Z :+1:
2 parents 1bc6f7b + 5ad4bd1 commit 1b5674e

File tree

4 files changed

+46
-11
lines changed

4 files changed

+46
-11
lines changed

src/Symfony/Bridge/Twig/NodeVisitor/Scope.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ public function __construct(Scope $parent = null)
3434
{
3535
$this->parent = $parent;
3636
$this->left = false;
37+
$this->data = array();
3738
}
3839

3940
/**

src/Symfony/Bridge/Twig/NodeVisitor/TranslationDefaultDomainNodeVisitor.php

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,10 @@ public function __construct()
3939
*/
4040
public function enterNode(\Twig_NodeInterface $node, \Twig_Environment $env)
4141
{
42-
if ($node instanceof \Twig_Node_Block) {
42+
if ($node instanceof \Twig_Node_Block || $node instanceof \Twig_Node_Module) {
4343
$this->scope = $this->scope->enter();
4444
}
4545

46-
if ($node instanceof \Twig_Node_Module) {
47-
$this->scope->set('domain', null);
48-
}
49-
5046
if ($node instanceof TransDefaultDomainNode) {
5147
if ($node->getNode('expr') instanceof \Twig_Node_Expression_Constant) {
5248
$this->scope->set('domain', $node->getNode('expr'));
@@ -93,7 +89,7 @@ public function leaveNode(\Twig_NodeInterface $node, \Twig_Environment $env)
9389
return false;
9490
}
9591

96-
if ($node instanceof \Twig_Node_Block) {
92+
if ($node instanceof \Twig_Node_Block || $node instanceof \Twig_Node_Module) {
9793
$this->scope = $this->scope->leave();
9894
}
9995

src/Symfony/Bridge/Twig/Tests/NodeVisitor/TranslationDefaultDomainNodeVisitorTest.php

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,10 @@ class TranslationDefaultDomainNodeVisitorTest extends TestCase
1515
public function testDefaultDomainAssignment(\Twig_Node $node)
1616
{
1717
$env = new \Twig_Environment(new \Twig_Loader_String(), array('cache' => false, 'autoescape' => false, 'optimizations' => 0));
18-
1918
$visitor = new TranslationDefaultDomainNodeVisitor();
2019

2120
// visit trans_default_domain tag
22-
$defaultDomain = TwigNodeProvider::getTransDefaultDomainTag('domain');
21+
$defaultDomain = TwigNodeProvider::getTransDefaultDomainTag(self::$domain);
2322
$visitor->enterNode($defaultDomain, $env);
2423
$visitor->leaveNode($defaultDomain, $env);
2524

@@ -38,12 +37,38 @@ public function testDefaultDomainAssignment(\Twig_Node $node)
3837
$this->assertEquals(array(array(self::$message, self::$domain)), $visitor->getMessages());
3938
}
4039

40+
/** @dataProvider getDefaultDomainAssignmentTestData */
41+
public function testNewModuleWithoutDefaultDomainTag(\Twig_Node $node)
42+
{
43+
$env = new \Twig_Environment(new \Twig_Loader_String(), array('cache' => false, 'autoescape' => false, 'optimizations' => 0));
44+
$visitor = new TranslationDefaultDomainNodeVisitor();
45+
46+
// visit trans_default_domain tag
47+
$newModule = TwigNodeProvider::getModule('test');
48+
$visitor->enterNode($newModule, $env);
49+
$visitor->leaveNode($newModule, $env);
50+
51+
// visit tested node
52+
$enteredNode = $visitor->enterNode($node, $env);
53+
$leavedNode = $visitor->leaveNode($node, $env);
54+
$this->assertSame($node, $enteredNode);
55+
$this->assertSame($node, $leavedNode);
56+
57+
// extracting tested node messages
58+
$visitor = new TranslationNodeVisitor();
59+
$visitor->enable();
60+
$visitor->enterNode($node, $env);
61+
$visitor->leaveNode($node, $env);
62+
63+
$this->assertEquals(array(array(self::$message, null)), $visitor->getMessages());
64+
}
65+
4166
public function getDefaultDomainAssignmentTestData()
4267
{
4368
return array(
44-
array(TwigNodeProvider::getTransFilter(self::$message, self::$domain)),
45-
array(TwigNodeProvider::getTransChoiceFilter(self::$message, self::$domain)),
46-
array(TwigNodeProvider::getTransTag(self::$message, self::$domain)),
69+
array(TwigNodeProvider::getTransFilter(self::$message)),
70+
array(TwigNodeProvider::getTransChoiceFilter(self::$message)),
71+
array(TwigNodeProvider::getTransTag(self::$message)),
4772
);
4873
}
4974
}

src/Symfony/Bridge/Twig/Tests/NodeVisitor/TwigNodeProvider.php

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,19 @@
77

88
class TwigNodeProvider
99
{
10+
public static function getModule($content)
11+
{
12+
return new \Twig_Node_Module(
13+
new \Twig_Node_Expression_Constant($content, 0),
14+
null,
15+
new \Twig_Node_Expression_Array(array(), 0),
16+
new \Twig_Node_Expression_Array(array(), 0),
17+
new \Twig_Node_Expression_Array(array(), 0),
18+
null,
19+
null
20+
);
21+
}
22+
1023
public static function getTransFilter($message, $domain = null)
1124
{
1225
$arguments = $domain ? array(

0 commit comments

Comments
 (0)