Skip to content

Commit aedeef1

Browse files
author
Gianluca Arbezzano
committed
Merge pull request #65 from bp1222/master
Add support to specify new file formats, or to ignore, defaults
2 parents 7b0a68c + de6dff6 commit aedeef1

File tree

3 files changed

+84
-1
lines changed

3 files changed

+84
-1
lines changed

PHPCtags.class.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -445,7 +445,7 @@ private function process($file)
445445
)
446446
);
447447

448-
$extensions = array('.php', '.php3', '.php4', '.php5', '.phps');
448+
$extensions = $this->mOptions['extensions'];
449449

450450
foreach ($iterator as $filename) {
451451
if (!in_array(substr($filename, strrpos($filename, '.')), $extensions)) {

bootstrap.php

+19
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
'excmd::',
2626
'fields::',
2727
'kinds::',
28+
'extensions::',
2829
'format::',
2930
'help',
3031
'recurse::',
@@ -64,6 +65,8 @@
6465
Include selected extension fields (flags: "afmikKlnsStz") [fks].
6566
--kinds=[+|-]flags
6667
Enable/disable tag kinds [cmfpvditn]
68+
--extensions=[+|-]extension[,[+|-]]extension
69+
Enable/disable file extensions [+.php,+.php3,+.php4,+.php5,+.phps]
6770
--format=level
6871
Force output of specified tag file format [2].
6972
--help
@@ -177,6 +180,22 @@
177180
$options['kinds'] = str_split($options['kinds']);
178181
}
179182

183+
$default_extensions = array('.php', '.php3', '.php4', '.php5', '.phps');
184+
if (!isset($options['extensions'])) {
185+
$options['extensions'] = $default_extensions;
186+
} else {
187+
$extensions = explode(',', $options['extensions']);
188+
$options['extensions'] = $default_extensions;
189+
foreach ($extensions as $ext) {
190+
if ($ext[0] == '+') {
191+
$options['extensions'][] = substr($ext, 1);
192+
} elseif ($ext[0] == '-') {
193+
$options['extensions'] = array_diff($options['extensions'], array(substr($ext, 1)));
194+
} else {
195+
die('phpctags: Invalid value for "extensions" option ' . $ext . PHP_EOL);
196+
}
197+
}
198+
}
180199

181200
// handle -u or --sort options
182201
if (isset($options['sort'])) {

tests/Acceptance/ExtensionsText.php

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
<?php
2+
3+
namespace tests\PHPCTags\Acceptance;
4+
5+
final class ExtensionsTest extends AcceptanceTestCase
6+
{
7+
/**
8+
* @test
9+
*/
10+
public function itUsesDefaultExtensions()
11+
{
12+
$this->givenSourceFile('new_extension.inc', <<<EOS
13+
<?php
14+
15+
class TestClass
16+
{
17+
function publicMethod() {
18+
}
19+
}
20+
EOS
21+
);
22+
23+
$this->runPHPCtags();
24+
$this->assertTagsFileHeaderIsCorrect();
25+
26+
$this->assertTagsFileContainsNoTagsFromFile('new_extension.inc');
27+
}
28+
29+
/**
30+
* @test
31+
*/
32+
public function itUsesCustomExtensions()
33+
{
34+
$this->givenSourceFile('new_extension.inc', <<<EOS
35+
<?php
36+
37+
class TestClass
38+
{
39+
public function publicMethod() {
40+
}
41+
}
42+
EOS
43+
);
44+
45+
$this->runPHPCtags(array('--extensions=+.inc'));
46+
$this->assertTagsFileHeaderIsCorrect();
47+
$this->assertNumberOfTagsInTagsFileIs(2);
48+
49+
$this->assertTagsFileContainsTag(
50+
'new_extension.inc',
51+
'TestClass',
52+
self::KIND_CLASS,
53+
3
54+
);
55+
$this->assertTagsFileContainsTag(
56+
'new_extension.inc',
57+
'publicMethod',
58+
self::KIND_METHOD,
59+
5,
60+
'class:TestClass',
61+
'public'
62+
);
63+
}
64+
}

0 commit comments

Comments
 (0)