diff --git a/GettextExtractor/Filters/PHPFilter.php b/GettextExtractor/Filters/PHPFilter.php index a249c08..36655a4 100644 --- a/GettextExtractor/Filters/PHPFilter.php +++ b/GettextExtractor/Filters/PHPFilter.php @@ -54,6 +54,9 @@ public function enterNode(PHPParser_Node $node) { } elseif ($node instanceof PHPParser_Node_Expr_FuncCall && $node->name instanceof PHPParser_Node_Name) { $parts = $node->name->parts; $name = array_pop($parts); + } elseif ($node instanceof PhpParser_Node_Expr_New && isset($node->class->parts)) { + $parts = $node->class->parts; + $name = array_pop($parts); } else { return; } @@ -100,6 +103,19 @@ private function processFunction(array $definition, PHPParser_Node $node) { } } + /** + * Includes a classs construct parameters to parse gettext phrases from + * + * @param $functionName string + * @param $singular int + * @param $plural int|null + * @param $context int|null + * @return self + */ + public function addClassName($functionName, $singular = 1, $plural = null, $context = null) { + parent::addFunction($functionName, $singular, $plural, $context); + } + /*** PHPParser_NodeVisitor: dont need these *******************************/ public function afterTraverse(array $nodes) { diff --git a/tests/unit/GettextExtractor/Filters/PHPFilterTest.php b/tests/unit/GettextExtractor/Filters/PHPFilterTest.php index ea1988b..f38024d 100644 --- a/tests/unit/GettextExtractor/Filters/PHPFilterTest.php +++ b/tests/unit/GettextExtractor/Filters/PHPFilterTest.php @@ -12,6 +12,7 @@ protected function setUp() { error_reporting(-1); $this->object = new GettextExtractor_Filters_PHPFilter(); $this->object->addFunction('addRule', 2); + $this->object->addClassName('TextInput', 2); $this->file = dirname(__FILE__) . '/../../data/default.php'; } @@ -33,6 +34,7 @@ public function testFunctionCallWithVariables() { GettextExtractor_Extractor::PLURAL => 'I see %d little indians!' ), $messages); } + public function testNestedFunctions() { $messages = $this->object->extract($this->file); @@ -116,6 +118,15 @@ public function testSingularAndPluralMessageFromOneParameter() { ), $messages); } + + public function testNewObjectParameter() { + $messages = $this->object->extract(dirname(__FILE__) . '/../../data/newObject.php'); + $this->assertContains(array( + GettextExtractor_Extractor::LINE => 3, + GettextExtractor_Extractor::SINGULAR => "Label" + ), $messages); + } + /** * @group bug5 */ diff --git a/tests/unit/data/newObject.php b/tests/unit/data/newObject.php new file mode 100644 index 0000000..8a90139 --- /dev/null +++ b/tests/unit/data/newObject.php @@ -0,0 +1,3 @@ +