diff --git a/docs.md b/docs.md index 2d6f00f..9e35b37 100644 --- a/docs.md +++ b/docs.md @@ -34,8 +34,8 @@ ### Class: Rudra\Annotation\ParamsExtractor | Visibility | Function | |:-----------|:---------| -| public | `getParams(array $exploded, string $assignment): array`
--------------------------------------------------------------\|
Parses an array of parameter strings into an associative array
--------------------------------------------------------------\|
Преобразует массив строк с параметрами в ассоциативный массив
--------------------------------------------------------------\|
------------------------------------------------------------------------------------\|
`from: "param1, param2 = 'param2', param3={param1;param2:'param2'}"`
`to: ["param1", "param2" => "param2", "param3" => ["param1", "param2" => "param2"]]`
------------------------------------------------------------------------------------\| | -| private | `handleData(string $data, array $exploded): ?array`
--------------------------------------------\|
Parses data into `key => value` pairs
--------------------------------------------\|
Преобразует данные в пары `ключ => значение`
--------------------------------------------\|
⚠️ IMPORTANT / ВАЖНО:
--------------------------------------------\|
Values inside arrays (curly braces) must not
contain the array assignment mark (`:`)
--------------------------------------------\|
Значения внутри массивов (фигурные скобки)
не должны содержать знак присваивания (`:`)
--------------------------------------------\| | +| public | `getParams(array $exploded, string $assignment): array`
--------------------------------------------------------------
Parses an array of parameter strings into an associative array
--------------------------------------------------------------
Преобразует массив строк с параметрами в ассоциативный массив
--------------------------------------------------------------
------------------------------------------------------------------------------------
`from: "param1, param2 = 'param2', param3={param1;param2:'param2'}"`
`to: ["param1", "param2" => "param2", "param3" => ["param1", "param2" => "param2"]]`
------------------------------------------------------------------------------------ | +| private | `handleData(string $data, array $exploded): ?array`
--------------------------------------------
Parses data into `key => value` pairs
--------------------------------------------
Преобразует данные в пары `ключ => значение`
--------------------------------------------
⚠️ IMPORTANT / ВАЖНО:
--------------------------------------------
Values inside arrays (curly braces) must not
contain the array assignment mark (`:`)
--------------------------------------------
Значения внутри массивов (фигурные скобки)
не должны содержать знак присваивания (`:`)
-------------------------------------------- | --- diff --git a/src/Annotation.php b/src/Annotation.php index 48c9718..4bc1b74 100755 --- a/src/Annotation.php +++ b/src/Annotation.php @@ -16,30 +16,30 @@ class Annotation implements AnnotationInterface { /** - * ----------------------| + * ---------------------- * Parameter separator - * ----------------------| + * ---------------------- * Разделитель параметров - * ----------------------| + * ---------------------- * - * --------------------------------------------------------| + * -------------------------------------------------------- * in the line ',', example: key='param', key2='param2' * in the array ';', example: {key:'param'; key2:'param2'} - * --------------------------------------------------------| + * -------------------------------------------------------- */ public const array DELIMITER = ["string" => ',', "array" => ';']; /** - * -----------------| + * ----------------- * Assignment mark - * -----------------| + * ----------------- * Знак присваивания - * -----------------| + * ----------------- * - * ----------------------------------------| + * ---------------------------------------- * in the line '=', example: key='param' * in the array ':', example: {key:'param'} - * ----------------------------------------| + * ---------------------------------------- */ public const array ASSIGNMENT = ["string" => '=', "array" => ':']; @@ -113,20 +113,20 @@ private function parseAnnotations(string $docBlock): array $annotations = []; /** - * --------------------------------------------------------------------------------------| + * -------------------------------------------------------------------------------------- * $matches[0][0] - @Annotation(param1, param2='param2', param3={param1;param2:'param2'}) * $matches[1][0] - Annotation * $matches[2][0] - param1, param2 = 'param2', param3={param1;param2:'param2'} - * --------------------------------------------------------------------------------------| + * -------------------------------------------------------------------------------------- */ if (preg_match_all("/@([A-Za-z_-]+)\((.*)?\)/", $docBlock, $matches)) { $count = count($matches[0]); $extractor = new ParamsExtractor(); /** - * ----------------------------------------------------------------------------------------------------------------------| + * ---------------------------------------------------------------------------------------------------------------------- * $annotations = ["Annotation" => [[0 => "param1", "param2" => "param2", "param3" => ["param1", "param2" => "param2"]]]] - * ----------------------------------------------------------------------------------------------------------------------| + * ---------------------------------------------------------------------------------------------------------------------- */ for ($i = 0; $i < $count; $i++) { $annotations[$matches[1][$i]][] = $extractor->getParams( diff --git a/src/ParamsExtractor.php b/src/ParamsExtractor.php index 88590d6..bdeb4fd 100755 --- a/src/ParamsExtractor.php +++ b/src/ParamsExtractor.php @@ -14,16 +14,16 @@ class ParamsExtractor { /** - * --------------------------------------------------------------| + * -------------------------------------------------------------- * Parses an array of parameter strings into an associative array - * --------------------------------------------------------------| + * -------------------------------------------------------------- * Преобразует массив строк с параметрами в ассоциативный массив - * --------------------------------------------------------------| + * -------------------------------------------------------------- * - * ------------------------------------------------------------------------------------| + * ------------------------------------------------------------------------------------ * `from: "param1, param2 = 'param2', param3={param1;param2:'param2'}"` * `to: ["param1", "param2" => "param2", "param3" => ["param1", "param2" => "param2"]]` - * ------------------------------------------------------------------------------------| + * ------------------------------------------------------------------------------------ * * @param array $exploded * @param string $assignment @@ -45,20 +45,20 @@ public function getParams(array $exploded, string $assignment): array } /** - * --------------------------------------------| + * -------------------------------------------- * Parses data into `key => value` pairs - * --------------------------------------------| + * -------------------------------------------- * Преобразует данные в пары `ключ => значение` - * --------------------------------------------| + * -------------------------------------------- * * ⚠️ IMPORTANT / ВАЖНО: - * --------------------------------------------| + * -------------------------------------------- * Values inside arrays (curly braces) must not * contain the array assignment mark (`:`) - * --------------------------------------------| + * -------------------------------------------- * Значения внутри массивов (фигурные скобки) * не должны содержать знак присваивания (`:`) - * --------------------------------------------| + * -------------------------------------------- * * @param string $data * @param array $exploded @@ -68,11 +68,11 @@ public function getParams(array $exploded, string $assignment): array private function handleData(string $data, array $exploded): ?array { /** - * --------------------------------------------------------------| + * -------------------------------------------------------------- * If in data an array of type param3={param1;param2:'param2'} - * --------------------------------------------------------------| + * -------------------------------------------------------------- * Если в данных есть массив типа param3={param1;param2:'param2'} - * --------------------------------------------------------------| + * -------------------------------------------------------------- */ if (preg_match("/=\s*{/", $data) && preg_match("/{(.*)}/", $exploded[1], $matches)) { return [ @@ -84,15 +84,15 @@ private function handleData(string $data, array $exploded): ?array } /** - * ---------------------------------------| + * --------------------------------------- * Remove quotation marks around parameter - * ---------------------------------------| + * --------------------------------------- * Удаляет кавычки вокруг параметра - * ---------------------------------------| + * --------------------------------------- * - * ----------------------| + * ---------------------- * matches[1] = 'param2'; - * ----------------------| + * ---------------------- */ if (preg_match("/'(.*)'/", $exploded[1], $matches)) { return [trim($exploded[0]) => $matches[1]];