summaryrefslogtreecommitdiff
path: root/vendor/phpdocumentor/reflection-docblock/src/Utils.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/phpdocumentor/reflection-docblock/src/Utils.php')
-rw-r--r--vendor/phpdocumentor/reflection-docblock/src/Utils.php62
1 files changed, 62 insertions, 0 deletions
diff --git a/vendor/phpdocumentor/reflection-docblock/src/Utils.php b/vendor/phpdocumentor/reflection-docblock/src/Utils.php
new file mode 100644
index 000000000..ddd0f61d9
--- /dev/null
+++ b/vendor/phpdocumentor/reflection-docblock/src/Utils.php
@@ -0,0 +1,62 @@
+<?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;
+
+use phpDocumentor\Reflection\Exception\PcreException;
+use Webmozart\Assert\Assert;
+
+use function preg_last_error;
+use function preg_split as php_preg_split;
+
+abstract class Utils
+{
+ /**
+ * Wrapper function for phps preg_split
+ *
+ * This function is inspired by {@link https://github.com/thecodingmachine/safe/blob/master/generated/pcre.php}. But
+ * since this library is all about performance we decided to strip everything we don't need. Reducing the amount
+ * of files that have to be loaded, ect.
+ *
+ * @param string $pattern The pattern to search for, as a string.
+ * @param string $subject The input string.
+ * @param int $limit If specified, then only substrings up to limit are returned with the
+ * rest of the string being placed in the last substring. A limit of -1 or 0 means "no limit".
+ * @param int $flags flags can be any combination of the following flags (combined with the | bitwise operator):
+ * *PREG_SPLIT_NO_EMPTY*
+ * If this flag is set, only non-empty pieces will be returned by preg_split().
+ * *PREG_SPLIT_DELIM_CAPTURE*
+ * If this flag is set, parenthesized expression in the delimiter pattern will be captured
+ * and returned as well.
+ * *PREG_SPLIT_OFFSET_CAPTURE*
+ * If this flag is set, for every occurring match the appendant string offset will also be returned.
+ * Note that this changes the return value in an array where every element is an array consisting of the
+ * matched string at offset 0 and its string offset into subject at offset 1.
+ *
+ * @return string[] Returns an array containing substrings of subject
+ * split along boundaries matched by pattern
+ *
+ * @throws PcreException
+ */
+ public static function pregSplit(string $pattern, string $subject, int $limit = -1, int $flags = 0): array
+ {
+ $parts = php_preg_split($pattern, $subject, $limit, $flags);
+ if ($parts === false) {
+ throw PcreException::createFromPhpError(preg_last_error());
+ }
+
+ Assert::allString($parts);
+
+ return $parts;
+ }
+}