JmesPath\TreeCompiler::visit PHP Method

visit() public method

public visit ( array $ast, string $fnName, string $expr ) : string
$ast array AST to compile.
$fnName string The name of the function to generate.
$expr string Expression being compiled.
return string
    public function visit(array $ast, $fnName, $expr)
    {
        $this->vars = [];
        $this->source = $this->indentation = '';
        $this->write("<?php\n")->write('use JmesPath\\TreeInterpreter as Ti;')->write('use JmesPath\\FnDispatcher as Fn;')->write('use JmesPath\\Utils;')->write('')->write('function %s(Ti $interpreter, $value) {', $fnName)->indent()->dispatch($ast)->write('')->write('return $value;')->outdent()->write('}');
        return $this->source;
    }

Usage Example

 public function testCreatesSourceCode()
 {
     $t = new TreeCompiler();
     $source = $t->visit(['type' => 'field', 'value' => 'foo'], 'testing', 'foo');
     $this->assertContains('<?php', $source);
     $this->assertContains('$value = isset($value->{\'foo\'}) ? $value->{\'foo\'} : null;', $source);
     $this->assertContains('$value = isset($value[\'foo\']) ? $value[\'foo\'] : null;', $source);
 }