From 3e8e75e6b23a8b1df7a24908b0a6a118a2a89c96 Mon Sep 17 00:00:00 2001 From: Tim Otten Date: Tue, 10 Oct 2023 20:14:13 -0700 Subject: [PATCH] phpstorm - Generate hints for Civi::paths() --- .../phpstorm/Civi/PhpStorm/PathGenerator.php | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 tools/extensions/phpstorm/Civi/PhpStorm/PathGenerator.php diff --git a/tools/extensions/phpstorm/Civi/PhpStorm/PathGenerator.php b/tools/extensions/phpstorm/Civi/PhpStorm/PathGenerator.php new file mode 100644 index 0000000000..9b1c496271 --- /dev/null +++ b/tools/extensions/phpstorm/Civi/PhpStorm/PathGenerator.php @@ -0,0 +1,44 @@ + 'generate', + ]; + } + + public function generate() { + $pathVars = array_keys(Invasive::get([\Civi::paths(), 'variableFactory'])); + $pathVarExprs = []; + foreach ($pathVars as $pathVar) { + $pathVarExprs[] = "[$pathVar]/."; + } + + $builder = new PhpStormMetadata('paths', __CLASS__); + + $builder->registerArgumentsSet('pathVars', ...$pathVars); + $builder->addExpectedArguments('\Civi\Core\Paths::getPath()', 0, 'pathVarExprs'); + $builder->addExpectedArguments('\Civi\Core\Paths::getUrl()', 0, 'pathVarExprs'); + + $builder->registerArgumentsSet('pathVarExprs', ...$pathVarExprs); + $builder->registerArgumentsSet('pathVarAttrs', 'path', 'url'); + $builder->addExpectedArguments('\Civi\Core\Paths::hasVariable()', 0, 'pathVars'); + $builder->addExpectedArguments('\Civi\Core\Paths::getVariable()', 0, 'pathVars'); + $builder->addExpectedArguments('\Civi\Core\Paths::getVariable()', 1, 'pathVarAttrs'); + + $builder->write(); + } + +} -- 2.25.1