diff --git a/lib/Cake/Console/Command/Task/ExtractTask.php b/lib/Cake/Console/Command/Task/ExtractTask.php index 913c5680e..4e5304b8b 100644 --- a/lib/Cake/Console/Command/Task/ExtractTask.php +++ b/lib/Cake/Console/Command/Task/ExtractTask.php @@ -48,6 +48,13 @@ class ExtractTask extends AppShell { */ protected $_merge = false; +/** + * Add headers for each sentence showing references + * + * @var bool + */ + protected $_headers = true; + /** * Current file being processed * @@ -224,6 +231,10 @@ class ExtractTask extends AppShell { $this->_merge = strtolower($response) === 'y'; } + if (isset($this->params['headers'])) { + $this->_headers = !(strtolower($this->params['headers']) === 'no'); + } + if (empty($this->_files)) { $this->_searchFiles(); } @@ -316,6 +327,9 @@ class ExtractTask extends AppShell { ))->addOption('merge', array( 'help' => __d('cake_console', 'Merge all domain and category strings into the default.po file.'), 'choices' => array('yes', 'no') + ))->addOption('headers', array( + 'help' => __d('cake_console', 'Add headers for each sentence showing references'), + 'choices' => array('yes', 'no') ))->addOption('output', array( 'help' => __d('cake_console', 'Full path to output directory.') ))->addOption('files', array( @@ -572,14 +586,17 @@ class ExtractTask extends AppShell { foreach ($translations as $msgid => $contexts) { foreach ($contexts as $context => $details) { $plural = $details['msgid_plural']; - $files = $details['references']; - $occurrences = array(); - foreach ($files as $file => $lines) { - $lines = array_unique($lines); - $occurrences[] = $file . ':' . implode(';', $lines); + $header = ''; + if ($this->_headers) { + $files = $details['references']; + $occurrences = array(); + foreach ($files as $file => $lines) { + $lines = array_unique($lines); + $occurrences[] = $file . ':' . implode(';', $lines); + } + $occurrences = implode("\n#: ", $occurrences); + $header = '#: ' . str_replace(DS, '/', str_replace($paths, '', $occurrences)) . "\n"; } - $occurrences = implode("\n#: ", $occurrences); - $header = '#: ' . str_replace(DS, '/', str_replace($paths, '', $occurrences)) . "\n"; $sentence = ''; if ($context) { diff --git a/lib/Cake/Test/Case/Console/Command/Task/ExtractTaskTest.php b/lib/Cake/Test/Case/Console/Command/Task/ExtractTaskTest.php index 363afb2ff..2669b7633 100644 --- a/lib/Cake/Test/Case/Console/Command/Task/ExtractTaskTest.php +++ b/lib/Cake/Test/Case/Console/Command/Task/ExtractTaskTest.php @@ -221,6 +221,35 @@ class ExtractTaskTest extends CakeTestCase { $this->assertNotRegExp($pattern, $result); } + /** + * testExtractWithoutHeaders method + * + * @return void + */ + public function testExtractWithoutHeaders() { + $this->Task->interactive = false; + + $this->Task->params['paths'] = CAKE . 'Test' . DS . 'test_app' . DS . 'View' . DS . 'Pages'; + $this->Task->params['output'] = $this->path . DS; + $this->Task->params['extract-core'] = 'no'; + $this->Task->params['merge'] = 'no'; + $this->Task->params['headers'] = 'no'; + + $this->Task->expects($this->never())->method('err'); + $this->Task->expects($this->any())->method('in') + ->will($this->returnValue('y')); + $this->Task->expects($this->never())->method('_stop'); + + $this->Task->execute(); + $this->assertTrue(file_exists($this->path . DS . 'LC_NUMERIC' . DS . 'default.pot')); + $this->assertFalse(file_exists($this->path . DS . 'LC_TIME' . DS . 'default.pot')); + + $result = file_get_contents($this->path . DS . 'default.pot'); + + $pattern = '/\n\#: .*\n/'; + $this->assertNotRegExp($pattern, $result); + } + /** * test exclusions *