Beispiel #1
0
 /**
  * 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;
 }
Beispiel #2
0
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);
 }
Beispiel #4
0
 /**
  * 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);
 }