diff options
Diffstat (limited to 'vendor/phpdocumentor/reflection-common/src')
6 files changed, 260 insertions, 0 deletions
diff --git a/vendor/phpdocumentor/reflection-common/src/Element.php b/vendor/phpdocumentor/reflection-common/src/Element.php new file mode 100644 index 000000000..8923e4fb0 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Element.php @@ -0,0 +1,30 @@ +<?php + +declare(strict_types=1); + +/** + * phpDocumentor + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +/** + * Interface for Api Elements + */ +interface Element +{ + /** + * Returns the Fqsen of the element. + */ + public function getFqsen() : Fqsen; + + /** + * Returns the name of the element. + */ + public function getName() : string; +} diff --git a/vendor/phpdocumentor/reflection-common/src/File.php b/vendor/phpdocumentor/reflection-common/src/File.php new file mode 100644 index 000000000..239c137e7 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/File.php @@ -0,0 +1,35 @@ +<?php + +declare(strict_types=1); + +/** + * This file is part of phpDocumentor. + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +/** + * Interface for files processed by the ProjectFactory + */ +interface File +{ + /** + * Returns the content of the file as a string. + */ + public function getContents() : string; + + /** + * Returns md5 hash of the file. + */ + public function md5() : string; + + /** + * Returns an relative path to the file. + */ + public function path() : string; +} diff --git a/vendor/phpdocumentor/reflection-common/src/Fqsen.php b/vendor/phpdocumentor/reflection-common/src/Fqsen.php new file mode 100644 index 000000000..8fc5d3441 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Fqsen.php @@ -0,0 +1,89 @@ +<?php + +declare(strict_types=1); + +/** + * phpDocumentor + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +use InvalidArgumentException; +use function assert; +use function end; +use function explode; +use function is_string; +use function preg_match; +use function sprintf; +use function trim; + +/** + * Value Object for Fqsen. + * + * @link https://github.com/phpDocumentor/fig-standards/blob/master/proposed/phpdoc-meta.md + * + * @psalm-immutable + */ +final class Fqsen +{ + /** @var string full quallified class name */ + private $fqsen; + + /** @var string name of the element without path. */ + private $name; + + /** + * Initializes the object. + * + * @throws InvalidArgumentException when $fqsen is not matching the format. + */ + public function __construct(string $fqsen) + { + $matches = []; + + $result = preg_match( + //phpcs:ignore Generic.Files.LineLength.TooLong + '/^\\\\([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff\\\\]*)?(?:[:]{2}\\$?([a-zA-Z_\\x7f-\\xff][a-zA-Z0-9_\\x7f-\\xff]*))?(?:\\(\\))?$/', + $fqsen, + $matches + ); + + if ($result === 0) { + throw new InvalidArgumentException( + sprintf('"%s" is not a valid Fqsen.', $fqsen) + ); + } + + $this->fqsen = $fqsen; + + if (isset($matches[2])) { + $this->name = $matches[2]; + } else { + $matches = explode('\\', $fqsen); + $name = end($matches); + assert(is_string($name)); + $this->name = trim($name, '()'); + } + } + + /** + * converts this class to string. + */ + public function __toString() : string + { + return $this->fqsen; + } + + /** + * Returns the name of the element without path. + */ + public function getName() : string + { + return $this->name; + } +} diff --git a/vendor/phpdocumentor/reflection-common/src/Location.php b/vendor/phpdocumentor/reflection-common/src/Location.php new file mode 100644 index 000000000..177deede6 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Location.php @@ -0,0 +1,53 @@ +<?php + +declare(strict_types=1); + +/** + * This file is part of phpDocumentor. + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +/** + * The location where an element occurs within a file. + * + * @psalm-immutable + */ +final class Location +{ + /** @var int */ + private $lineNumber = 0; + + /** @var int */ + private $columnNumber = 0; + + /** + * Initializes the location for an element using its line number in the file and optionally the column number. + */ + public function __construct(int $lineNumber, int $columnNumber = 0) + { + $this->lineNumber = $lineNumber; + $this->columnNumber = $columnNumber; + } + + /** + * Returns the line number that is covered by this location. + */ + public function getLineNumber() : int + { + return $this->lineNumber; + } + + /** + * Returns the column number (character position on a line) for this location object. + */ + public function getColumnNumber() : int + { + return $this->columnNumber; + } +} diff --git a/vendor/phpdocumentor/reflection-common/src/Project.php b/vendor/phpdocumentor/reflection-common/src/Project.php new file mode 100644 index 000000000..57839fd14 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/Project.php @@ -0,0 +1,25 @@ +<?php + +declare(strict_types=1); + +/** + * phpDocumentor + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +/** + * Interface for project. Since the definition of a project can be different per factory this interface will be small. + */ +interface Project +{ + /** + * Returns the name of the project. + */ + public function getName() : string; +} diff --git a/vendor/phpdocumentor/reflection-common/src/ProjectFactory.php b/vendor/phpdocumentor/reflection-common/src/ProjectFactory.php new file mode 100644 index 000000000..8bdc60678 --- /dev/null +++ b/vendor/phpdocumentor/reflection-common/src/ProjectFactory.php @@ -0,0 +1,28 @@ +<?php + +declare(strict_types=1); + +/** + * phpDocumentor + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + * + * @link http://phpdoc.org + */ + +namespace phpDocumentor\Reflection; + +/** + * Interface for project factories. A project factory shall convert a set of files + * into an object implementing the Project interface. + */ +interface ProjectFactory +{ + /** + * Creates a project from the set of files. + * + * @param File[] $files + */ + public function create(string $name, array $files) : Project; +} |