Skip to content

Commit ea0136d

Browse files
committed
SearchExtension: added 'exclude -> files'
1 parent f80a9f7 commit ea0136d

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/DI/Extensions/SearchExtension.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ public function getConfigSchema(): Nette\Schema\Schema
4343
'extends' => Expect::anyOf(Expect::listOf('string'), Expect::string()->castTo('array'))->default([]),
4444
'implements' => Expect::anyOf(Expect::listOf('string'), Expect::string()->castTo('array'))->default([]),
4545
'exclude' => Expect::structure([
46+
'files' => Expect::anyOf(Expect::listOf('string'), Expect::string()->castTo('array'))->default([]),
4647
'classes' => Expect::anyOf(Expect::listOf('string'), Expect::string()->castTo('array'))->default([]),
4748
'extends' => Expect::anyOf(Expect::listOf('string'), Expect::string()->castTo('array'))->default([]),
4849
'implements' => Expect::anyOf(Expect::listOf('string'), Expect::string()->castTo('array'))->default([]),
@@ -78,15 +79,16 @@ public function loadConfiguration()
7879

7980
public function findClasses(\stdClass $config): array
8081
{
82+
$exclude = $config->exclude;
8183
$robot = new RobotLoader;
8284
$robot->setTempDirectory($this->tempDir);
8385
$robot->addDirectory($config->in);
8486
$robot->acceptFiles = $config->files ?: ['*.php'];
87+
$robot->ignoreDirs = array_merge($robot->ignoreDirs, $exclude->files);
8588
$robot->reportParseErrors(false);
8689
$robot->refresh();
8790
$classes = array_unique(array_keys($robot->getIndexedClasses()));
8891

89-
$exclude = $config->exclude;
9092
$acceptRE = self::buildNameRegexp($config->classes);
9193
$rejectRE = self::buildNameRegexp($exclude->classes);
9294
$acceptParent = array_merge($config->extends, $config->implements);

tests/SearchExtension/files.phpt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,3 +61,22 @@ Assert::same([
6161
'Foo\\ClassBar',
6262
'InterfaceOk1',
6363
], array_keys($services));
64+
65+
66+
67+
$services = check('
68+
search:
69+
in: fixtures
70+
exclude:
71+
files:
72+
- Foo*.*
73+
- ./subdir/*
74+
');
75+
76+
Assert::same([
77+
'ClassOk1',
78+
'ClassOk2',
79+
'CountableClass',
80+
'ExtendsStdClass',
81+
'InterfaceOk1',
82+
], array_keys($services));

0 commit comments

Comments
 (0)