Skip to content

Commit

Permalink
Make TokenAnalyser use Generator to find out about configured namespaces
Browse files Browse the repository at this point in the history
Also support `null` to indicate all namespaces are suppprted (used to be `false`).
  • Loading branch information
DerManoMann committed Sep 27, 2021
1 parent 9f3511b commit 30b7e91
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 7 deletions.
8 changes: 5 additions & 3 deletions src/Analysers/TokenAnalyser.php
Original file line number Diff line number Diff line change
Expand Up @@ -67,11 +67,12 @@ protected function fromTokens(array $tokens, Context $parseContext): Analysis
{
$docBlockParser = new DocBlockParser();
$analysis = new Analysis([], $parseContext);
$generator = $this->generator ?: new Generator();

reset($tokens);
$token = '';

$imports = DocBlockParser::$defaultImports;
$imports = $generator->getAliases();

$parseContext->uses = [];
// default to parse context to start with
Expand Down Expand Up @@ -368,10 +369,11 @@ protected function fromTokens(array $tokens, Context $parseContext): Analysis
// not a trait use
$parseContext->uses[$alias] = $target;

if (DocBlockParser::$whitelist === false) {
$namespaces = $generator->getNamespaces();
if (null === $namespaces) {
$imports[strtolower($alias)] = $target;
} else {
foreach (DocBlockParser::$whitelist as $namespace) {
foreach ($namespaces as $namespace) {
if (strcasecmp(substr($target . '\\', 0, strlen($namespace)), $namespace) === 0) {
$imports[strtolower($alias)] = $target;
break;
Expand Down
7 changes: 3 additions & 4 deletions src/Generator.php
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
use OpenApi\Analysers\DocBlockAnnotationFactory;
use OpenApi\Analysers\DocBlockParser;
use OpenApi\Analysers\ReflectionAnalyser;
use OpenApi\Analysers\TokenAnalyser;
use OpenApi\Annotations\OpenApi;
use OpenApi\Loggers\DefaultLogger;
use OpenApi\Processors\AugmentParameters;
Expand Down Expand Up @@ -56,7 +55,7 @@ class Generator
/** @var array Map of namespace aliases to be supported by doctrine. */
protected $aliases = null;

/** @var array List of annotation namespaces to be autoloaded by doctrine. */
/** @var array|null List of annotation namespaces to be autoloaded by doctrine. */
protected $namespaces = null;

/** @var AnalyserInterface The configured analyzer. */
Expand Down Expand Up @@ -144,7 +143,7 @@ public function setAliases(?array $aliases): Generator
return $this;
}

public function getNamespaces(): array
public function getNamespaces(): ?array
{
$namespaces = null !== $this->namespaces ? $this->namespaces : DocBlockParser::$whitelist;
$namespaces = false !== $namespaces ? $namespaces : [];
Expand All @@ -155,7 +154,7 @@ public function getNamespaces(): array

public function addNamespace(string $namespace): Generator
{
$namespaces = $this->getNamespaces();
$namespaces = (array) $this->getNamespaces();
$namespaces[] = $namespace;
$this->setNamespaces($namespaces);

Expand Down

0 comments on commit 30b7e91

Please sign in to comment.