{
private $parameters;
- /**
- * Constructor.
- *
- * @param array $parameters An array of parameters
- * @param InputDefinition|null $definition A InputDefinition instance
- */
public function __construct(array $parameters, InputDefinition $definition = null)
{
$this->parameters = $parameters;
/**
* {@inheritdoc}
*/
- public function hasParameterOption($values)
+ public function hasParameterOption($values, $onlyParams = false)
{
$values = (array) $values;
foreach ($this->parameters as $k => $v) {
- if (!is_int($k)) {
+ if (!\is_int($k)) {
$v = $k;
}
- if (in_array($v, $values)) {
+ if ($onlyParams && '--' === $v) {
+ return false;
+ }
+
+ if (\in_array($v, $values)) {
return true;
}
}
/**
* {@inheritdoc}
*/
- public function getParameterOption($values, $default = false)
+ public function getParameterOption($values, $default = false, $onlyParams = false)
{
$values = (array) $values;
foreach ($this->parameters as $k => $v) {
- if (is_int($k)) {
- if (in_array($v, $values)) {
+ if ($onlyParams && ('--' === $k || (\is_int($k) && '--' === $v))) {
+ return $default;
+ }
+
+ if (\is_int($k)) {
+ if (\in_array($v, $values)) {
return true;
}
- } elseif (in_array($k, $values)) {
+ } elseif (\in_array($k, $values)) {
return $v;
}
}
$params = array();
foreach ($this->parameters as $param => $val) {
if ($param && '-' === $param[0]) {
- $params[] = $param.('' != $val ? '='.$this->escapeToken($val) : '');
+ if (\is_array($val)) {
+ foreach ($val as $v) {
+ $params[] = $param.('' != $v ? '='.$this->escapeToken($v) : '');
+ }
+ } else {
+ $params[] = $param.('' != $val ? '='.$this->escapeToken($val) : '');
+ }
} else {
- $params[] = $this->escapeToken($val);
+ $params[] = \is_array($val) ? implode(' ', array_map(array($this, 'escapeToken'), $val)) : $this->escapeToken($val);
}
}
protected function parse()
{
foreach ($this->parameters as $key => $value) {
+ if ('--' === $key) {
+ return;
+ }
if (0 === strpos($key, '--')) {
$this->addLongOption(substr($key, 2), $value);
} elseif ('-' === $key[0]) {
throw new InvalidOptionException(sprintf('The "--%s" option requires a value.', $name));
}
- $value = $option->isValueOptional() ? $option->getDefault() : true;
+ if (!$option->isValueOptional()) {
+ $value = true;
+ }
}
$this->options[$name] = $value;