8000 minor #19722 [ExpressionLanguage] Move the ::dump method to the Node … · symfony/symfony@df8cf70 · GitHub
[go: up one dir, main page]

Skip to content

Commit df8cf70

Browse files
minor #19722 [ExpressionLanguage] Move the ::dump method to the Node classe to ease its usage (lyrixx)
This PR was merged into the 3.2-dev branch. Discussion ---------- [ExpressionLanguage] Move the ::dump method to the Node classe to ease its usage | Q | A | ------------- | --- | Branch? | master | Bug fix? | no | New feature? | no | BC breaks? | no | Deprecations? | no | Tests pass? | yes | Fixed tickets | - | License | MIT | Doc PR | - Example (for @nicolas-grekas :trollface: ) ```php <?php require __DIR__.'/vendor/autoload.php'; use Symfony\Component\ExpressionLanguage\ExpressionLanguage; use Symfony\Component\ExpressionLanguage\Node\NameNode; $el = new ExpressionLanguage(); $expression = $el->parse('a + b + 12', ['a','b']); function dump_with_highlight($node) { $dump = ''; foreach ($node->toArray() as $v) { if (is_scalar($v)) { $dump .= $v; } elseif ($v instanceof NameNode) { $dump .= sprintf('`%s`', dump_with_highlight($v)); } else { $dump .= dump_with_highlight($v); } } return $dump; } echo dump_with_highlight($expression->getNodes()); ``` Result: ``` ((<strong>a</strong> + <strong>b</strong>) + 12) ``` Commits ------- b6d0050 [ExpressionLanguage] Move the ::dump method to the Node classe to ease its usage
2 parents 865f344 + b6d0050 commit df8cf70

File tree

3 files changed

+12
-19
lines changed

3 files changed

+12
-19
lines changed

src/Symfony/Component/ExpressionLanguage/Node/Node.php

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,17 @@ public function toArray()
8181
throw new \BadMethodCallException(sprintf('Dumping a "%s" instance is not supported yet.', get_class($this)));
8282
}
8383

84+
public function dump()
85+
{
86+
$dump = '';
87+
88+
foreach ($this->toArray() as $v) {
89+
$dump .= is_scalar($v) ? $v : $v->dump();
90+
}
91+
92+
return $dump;
93+
}
94+
8495
protected function dumpString($value)
8596
{
8697
return sprintf('"%s"', addcslashes($value, "\0\t\"\\"));

src/Symfony/Component/ExpressionLanguage/ParsedExpression.php

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,20 +39,4 @@ public function getNodes()
3939
{
4040
return $this->nodes;
4141
}
42-
43-
public function dump()
44-
{
45-
return $this->dumpNode($this->nodes);
46-
}
47-
48-
private function dumpNode(Node $node)
49-
{
50-
$dump = '';
51-
52-
foreach ($node->toArray() as $v) {
53-
$dump .= is_scalar($v) ? $v : $this->dumpNode($v);
54-
}
55-
56-
return $dump;
57-
}
5842
}

src/Symfony/Component/ExpressionLanguage/Tests/Node/AbstractNodeTest.php

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
namespace Symfony\Component\ExpressionLanguage\Tests\Node;
1313

1414
use Symfony\Component\ExpressionLanguage\Compiler;
15-
use Symfony\Component\ExpressionLanguage\ParsedExpression;
1615

1716
abstract class AbstractNodeTest extends \PHPUnit_Framework_TestCase
1817
{
@@ -43,8 +42,7 @@ abstract public function getCompileData();
4342
*/
4443
public function testDump($expected, $node)
4544
{
46-
$expr = new ParsedExpression($expected, $node);
47-
$this->assertSame($expected, $expr->dump());
45+
$this->assertSame($expected, $node->dump());
4846
}
4947

5048
abstract public function getDumpData();

0 commit comments

Comments
 (0)
0