public function testRewriteEntityType()
 {
     $function_call = Parser::parseExpression('entity_get_info("node")');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::entityManager()->getDefinition("node")', $rewritten->getText());
 }
 public function testRewriteAccount()
 {
     $function_call = Parser::parseExpression('user_access("be exceptional", $account)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('$account->hasPermission("be exceptional")', $rewritten->getText());
 }
 public function testRewriteNoVariablesUnknownSeverity()
 {
     $function_call = Parser::parseExpression('watchdog("foo", "Ba-zing!", NULL, WATCHDOG_FOO)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::logger("foo")->notice("Ba-zing!", [])', $rewritten->getText());
 }
 public function testRewriteDisplayOptions()
 {
     $function_call = Parser::parseExpression('field_view_field("node", $node, "field_foo", array("type" => "some_formatter"), $langcode)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('$node->field_foo->view(array("type" => "some_formatter"))', $rewritten->getText());
 }
 public function testRewriteSpecificBin()
 {
     $function_call = Parser::parseExpression('cache_get("baz", "foo")');
     $rewritten = $this->getPlugin()->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::cache("foo")->get("baz")', $rewritten->getText());
 }
 public function testRewrite()
 {
     $function_call = Parser::parseExpression('drupal_is_cli()');
     $rewritten = $this->getPlugin()->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\ExpressionNode', $rewritten);
     $this->assertEquals('(PHP_SAPI === "cli")', $rewritten->getText());
 }
 public function testRewrite()
 {
     $function_call = Parser::parseExpression('entity_create("node", $node_values)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::entityManager()->getStorage("node")->create($node_values)', $rewritten->getText());
 }
 public function testRewriteInsert()
 {
     $function_call = Parser::parseExpression('drupal_write_record("foobar", $record)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::database()->insert("foobar")->fields($record)->execute()', $rewritten->getText());
 }
 public function testRewrite()
 {
     $function_call = Parser::parseExpression('form_state_values_clean($form_state)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('$form_state->cleanValues()', $rewritten->getText());
 }
 public function testRewriteWithArguments()
 {
     $function_call = Parser::parseExpression('module_invoke_all("menu_alter", $menu)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::moduleHandler()->invokeAll("menu_alter", [$menu])', $rewritten->getText());
 }
 public function testRewriteWithoutCacheReset()
 {
     $function_call = Parser::parseExpression('user_load(30)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::entityManager()->getStorage(\'user\')->load(30)', $rewritten->getText());
 }
 public function testRewrite()
 {
     $function_call = Parser::parseExpression('field_update_field($field)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('$field->save()', $rewritten->getText());
 }
 public function testRewriteSpecificBinWithExpiration()
 {
     $function_call = Parser::parseExpression('cache_set("foo", array(), "bar", 67890)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::cache("bar")->set("foo", array(), 67890)', $rewritten->getText());
 }
 public function testRewriteWithName()
 {
     $function_call = Parser::parseExpression('form_load_include($form_state, "inc", "mod_foo", "bazzle")');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('$form_state->loadInclude("mod_foo", "inc", "bazzle")', $rewritten->getText());
 }
 public function testRewrite()
 {
     $function_call = Parser::parseExpression('ctools_object_cache_get("foo", "baz")');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::service(\'user.tempstore\')->get("baz")', $rewritten->getText());
 }
 public function testRewriteFieldType()
 {
     $function_call = Parser::parseExpression('field_info_field_types("text")');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::service(\'plugin.manager.field.field_type\')->getDefinition("text")', $rewritten->getText());
 }
 public function testStringKeyAndExtractableDefaultValue()
 {
     $function_call = Parser::parseExpression('variable_get("foo_wambooli", 30)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::config(\'foo.settings\')->get("foo_wambooli")', $rewritten->getText());
 }
 public function testRewrite()
 {
     $function_call = Parser::parseExpression('drupal_get_title()');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::service(\'title_resolver\')->getTitle(\\Drupal::request(), \\Drupal::routeMatch()->getRouteObject())', $rewritten->getText());
 }
 public function testRewrite()
 {
     $function_call = Parser::parseExpression('form_set_value($element, $value, $form_state)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('$form_state->setValueForElement($element, $value)', $rewritten->getText());
 }
 public function testRewriteArbitraryKeyAsSetter()
 {
     /** @var \Pharborist\Operators\AssignNode $expr */
     $expr = Parser::parseExpression('$form_state["foo"]["baz"] = "bar"');
     $rewritten = $this->plugin->rewriteAsSetter($expr->getLeftOperand(), 'foo', $expr);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('$form_state->set(["foo", "baz"], "bar")', $rewritten->getText());
 }
 public function testClearArguments()
 {
     /** @var \Pharborist\Functions\FunctionCallNode $call */
     $call = Parser::parseExpression('foo(42)');
     $this->assertCount(1, $call->getArguments());
     $call->clearArguments();
     $this->assertTrue($call->getArguments()->isEmpty());
 }
 public function testCreate()
 {
     $expr = Parser::parseExpression('empty($foo)');
     $not = BooleanNotNode::fromExpression($expr);
     $this->assertInstanceOf('\\Pharborist\\Operators\\BooleanNotNode', $not);
     $this->assertSame($expr, $not->getOperand());
     $this->assertEquals('!empty($foo)', $not->getText());
 }
 public function testRewrite()
 {
     $function_call = Parser::parseExpression('drupal_map_assoc(array(0, 1, 2, 3))');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Functions\\FunctionCallNode', $rewritten);
     $this->assertSame($rewritten, $function_call);
     $this->assertEquals('array_combine(array(0, 1, 2, 3), array(0, 1, 2, 3))', $rewritten->getText());
 }
 public function testRewrite()
 {
     $function_call = Parser::parseExpression('st("I translate thee!")');
     /** @var \Pharborist\Functions\FunctionCallNode $rewritten */
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertSame($function_call, $rewritten);
     $this->assertEquals('t("I translate thee!")', $rewritten->getText());
 }
 /**
  * @depends testGetRootProperty
  */
 public function testGetPropertyName()
 {
     /** @var ObjectPropertyNode $property */
     $property = Parser::parseExpression('$node->field_foo');
     $this->assertEquals('field_foo', $property->getPropertyName());
     $property = Parser::parseExpression('$node->$field["value"]');
     $this->assertNull($property->getPropertyName());
 }
 public function testRewrite()
 {
     $function_call = Parser::parseExpression('get_t()');
     /** @var \Pharborist\Types\StringNode $rewritten */
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Types\\StringNode', $rewritten);
     $this->assertEquals('t', $rewritten->toValue());
 }
 /**
  * {@inheritdoc}
  */
 public function rewrite(FunctionCallNode $call, TargetInterface $target)
 {
     $arguments = $call->getArguments();
     $property = $arguments[2] instanceof StringNode ? $arguments[2]->toValue() : clone $arguments[2];
     $rewritten = ObjectMethodCallNode::create(Parser::parseExpression($arguments[1] . '->' . $property), 'view');
     if (sizeof($arguments) >= 4) {
         $rewritten->appendArgument(clone $arguments[3]);
     }
     return $rewritten;
 }
 public function testRewriteArgument()
 {
     $function_call = Parser::parseExpression('theme_get_registry(FALSE)');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::service(\'theme.registry\')->getRuntime()', $rewritten->getText());
     $function_call = Parser::parseExpression('theme_get_registry("foo")');
     $rewritten = $this->plugin->rewrite($function_call, $this->target);
     $this->assertInstanceOf('\\Pharborist\\Objects\\ObjectMethodCallNode', $rewritten);
     $this->assertEquals('\\Drupal::service(\'theme.registry\')->get()', $rewritten->getText());
 }
 public function testGetRoot()
 {
     /** @var ArrayLookupNode $lookup */
     $lookup = Parser::parseExpression('$foo["bar"]["baz"][0]');
     $this->assertInstanceOf('\\Pharborist\\ArrayLookupNode', $lookup);
     $root = $lookup->getRootArray();
     $this->assertInstanceOf('\\Pharborist\\Variables\\VariableNode', $root);
     $this->assertEquals('$foo', $root->getText());
     $lookup = Parser::parseExpression('foo()["bar"]');
     $this->assertInstanceOf('\\Pharborist\\ArrayLookupNode', $lookup);
     $root = $lookup->getRootArray();
     $this->assertInstanceOf('\\Pharborist\\Functions\\FunctionCallNode', $root);
     $this->assertEquals('foo', $root->getName()->getText());
 }
 /**
  * {@inheritdoc}
  */
 public function convert(TargetInterface $target)
 {
     foreach ($this->configuration['function_calls'] as $function => $replace_with) {
         $function_calls = $target->getIndexer('function_call')->get($function);
         foreach ($function_calls as $function_call) {
             $rewritten = str_ireplace($function, $replace_with, $function_call->getText());
             $node = Parser::parseExpression($rewritten);
             $function_call->replaceWith($node);
             $target->save($node);
         }
     }
     // Flush other open syntax trees to ensure that other plugins don't clobber
     // our changes later.
     $target->flush();
     foreach ($target->getFinder() as $file) {
         // Load in the entire contents of the module. This is criminally inefficient
         // and wasteful of memory and should eventually be refactored into something
         // a little more...I dunno, sustainable.
         /** @var \Symfony\Component\Finder\SplFileInfo $file */
         $search = array_keys($this->targets);
         $replace = array_values($this->targets);
         file_put_contents($file->getPathname(), str_replace($search, $replace, $file->getContents()));
     }
 }