xref: /dokuwiki/_test/rector/DokuWikiPtlnRector.php (revision fe15e2c063a38f65804c55e581c72b96ac36edf7)
1<?php
2
3namespace dokuwiki\test\rector;
4
5use PhpParser\Node;
6use PhpParser\Node\Expr\FuncCall;
7use PhpParser\Node\Stmt\Echo_;
8use PhpParser\Node\Stmt\Expression;
9use Rector\Core\Rector\AbstractRector;
10use Symplify\RuleDocGenerator\ValueObject\CodeSample\CodeSample;
11use Symplify\RuleDocGenerator\ValueObject\RuleDefinition;
12
13/**
14 * Replace ptln() calls with echo
15 */
16class DokuWikiPtlnRector extends AbstractRector
17{
18
19    /** @inheritdoc */
20    public function getRuleDefinition(): RuleDefinition
21    {
22        return new RuleDefinition('Replace ptln() calls with echo', [
23            new CodeSample(
24                <<<'CODE_SAMPLE'
25ptln('Hello World', 7);
26CODE_SAMPLE,
27                <<<'CODE_SAMPLE'
28echo 'Hello World';
29CODE_SAMPLE
30            ),
31        ]);
32    }
33
34    /** @inheritdoc */
35    public function getNodeTypes(): array
36    {
37        return [Expression::class];
38    }
39
40    /** @inheritdoc */
41    public function refactor(Node $node)
42    {
43        if (!$node->expr instanceof FuncCall) {
44            return null;
45        }
46
47        if (!$this->nodeNameResolver->isName($node->expr, 'ptln')) {
48            return null;
49        }
50
51        return new Echo_([
52            $node->expr->args[0]->value
53        ]);
54    }
55}
56