/** * Get the default value of each field. * * @return array */ public function getDefaults() { if ($this->spec instanceof Spec) { return $this->spec->getDefaults(); } return []; }
/** * Get a RAML parameter definition from a Spec field. * * @param Spec $spec * @param string $field * * @return array */ protected function specFieldToParameter(Spec $spec, $field) { $constraints = $spec->getConstraints(); $defaults = $spec->getDefaults(); $required = $spec->getRequired(); $parameter = []; if (Arr::has($constraints, $field)) { $input = $constraints[$field]; if (is_array($input) || $input instanceof Spec) { if ($input instanceof Spec) { $input = [$input]; } foreach ($input as $constraint) { if ($constraint instanceof PrimitiveTypeConstraint) { switch ($constraint->toString()) { case ScalarTypes::SCALAR_STRING: $parameter['type'] = 'string'; break; case ScalarTypes::SCALAR_FLOAT: case ScalarTypes::SCALAR_INTEGER: $parameter['type'] = 'number'; break; case ScalarTypes::SCALAR_BOOLEAN: $parameter['type'] = 'boolean'; break; } } } } } if (Arr::has($defaults, $field)) { $parameter['default'] = $defaults[$field]; } $parameter['required'] = in_array($field, $required); return $parameter; }
/** * @param Spec $spec * @param string $field * * @return TableRow */ protected function renderConstraint(Spec $spec, $field) { $constraints = $spec->getConstraints(); $defaults = $spec->getDefaults(); $default = ''; if (array_key_exists($field, $defaults)) { $default = $defaults[$field]; } $constraint = $constraints[$field]; if ($constraint instanceof AbstractConstraint) { return new TableRow([], [new TableCell([], $field), new TableCell([], $constraint->toString()), new TableCell([], (string) $default)]); } return new TableRow([], [new TableCell([], $field), new TableCell([], Std::map(function (AbstractConstraint $constraint) { return $constraint->toString() . ', '; }, $constraint)), new TableCell([], (string) $default)]); }
public function testAccessors() { $strings = Boa::string(); $spec = new Spec(['name' => $strings], ['name' => 'Bobby'], ['name']); $this->assertEqualsMatrix([[['name' => $strings], $spec->getConstraints()], [['name' => 'Bobby'], $spec->getDefaults()], [['name'], $spec->getRequired()]]); }