/** * Wie man hier sehen kann, ist des natürlich Käse * aber ich hab keine Lust auf den ganzen Annotation-Rumble * (siehe Annotation.php) * @TODO ding dong (Annotation Writer schreiben) */ public function addSimpleAnnotation($name, array $values = array()) { if (isset($this->body)) { $this->body .= "\n"; } $this->body .= S::expand((string) $name, '@', S::START); if (count($values) > 0) { $this->body .= '('; foreach ($values as $key => $value) { if (is_string($value)) { $this->body .= sprintf('%s="%s", ', $key, str_replace('"', '""', $value)); } elseif (is_integer($value)) { $this->body .= sprintf('%s=%d, ', $key, $value); } elseif (is_array($value)) { throw new Exception('Ich kann keine verschachtelten Arrays'); } else { throw new Exception('Ich kann noch nichts anderes'); } } $this->body = mb_substr($this->body, 0, -2); $this->body .= ')'; } return $this; }
use Webforge\Setup\ConfigurationTester\ConfigurationTester; use Psc\System\System; use Psc\Code\Generate\ClassWriter; use Webforge\Common\JS\JSONConverter; use Psc\JS\jQuery; use Seld\JsonLint\JsonParser; /** * * $createCommand = function ($name, array|closure $configure, closure $execute) { * * $arg = function ($name, $description = NULL, $required = TRUE) // default: required * $opt = function($name, $short = NULL, $withValue = TRUE, $description = NULL) // default: mit value required * $flag = function($name, $short = NULL, $description) // ohne value */ $createCommand('compile:komodo-command-call', array($arg('extension-name')), function ($input, $output, $command) { $extensionClass = Code::expandNamespace(\Webforge\Common\String::expand($input->getArgument('extension-name'), 'Extension'), 'Psc\\Code\\Compile'); $extension = GClass::factory($extensionClass); $fields = array(); if ($extension->hasMethod('__construct')) { foreach ($extension->getMethod('__construct')->getParameters() as $param) { $fields[] = $param->getName(); } } // das nimmt vielleicht zu viele, weis nicht, alternativ würds auch ne statische methode zur extension tun foreach ($extension->getProperties() as $property) { $fields[] = $property->getName(); } $json = array(); foreach (array_unique($fields) as $field) { $json[$field] = '%(ask:' . $field . ')'; }
protected function parseExtensionGClass($input) { $extensionClass = Code::expandNamespace(\Webforge\Common\String::expand($input->getArgument('name'), 'Extension'), 'Psc\\Code\\Compile'); return GClass::factory($extensionClass); }
/** * wird automatisch mit dependencies erstellt * @param string $name der Name des Tasks ohne Namespace und "Task" dahinter */ public function createTask($name) { $this->init(); $class = Code::expandNamespace(\Webforge\Common\String::expand($name, 'Task'), 'Psc\\System\\Deploy'); $gClass = GClass::factory($class); $params = array(); if ($gClass->hasMethod('__construct')) { $constructor = $gClass->getMethod('__construct'); foreach ($constructor->getParameters() as $parameter) { $params[] = $this->resolveTaskDependency($parameter, $gClass); } } return $gClass->newInstance($params); }