Example #1
0
 /**
  * Define a field
  * 
  * @param sndsgd\Field $field The field to define
  * @return sndsgd\field\Collection
  */
 public function addField(Field $field)
 {
     $name = $field->getName();
     if (array_key_exists($name, $this->fields)) {
         throw new DuplicateFieldNameException($name);
     }
     $this->fields[$name] = $field;
     foreach ($field->getAliases() as $alias) {
         if (array_key_exists($alias, $this->fieldAliases)) {
             throw new DuplicateFieldAliasException($alias);
         }
         $this->fieldAliases[$alias] = $name;
     }
     return $this;
 }
Example #2
0
 /**
  * Create usage instructions for a field
  *
  * @param sndsgd\Field $field
  * @return string
  */
 private function createFieldUsage(Field $field)
 {
     $name = $field->getName();
     $opts = array_merge(["--{$name}"], $field->getAliases());
     $isBoolean = $field instanceof BooleanField;
     $hint = $field->getData('short-hint', $name);
     array_walk($opts, function (&$v) use($isBoolean, $hint) {
         $isName = substr($v, 0, 2) === '--';
         if ($isName) {
             if (!$isBoolean) {
                 $v .= '=';
             }
         } else {
             if (!$isName) {
                 $v = "-{$v} ";
             }
         }
         if (!$isBoolean) {
             $v .= "<{$hint}>";
         }
         $v = trim($v);
     });
     $opts = implode('|', $opts);
     $isRequired = $field->hasRule('sndsgd\\field\\rule\\Required');
     if (!$isRequired) {
         $opts = "[{$opts}]";
     }
     return $opts;
 }