/**
* Adds a conditional chain.
*
* If there are conditions in the current chain, adds the condition as a subchain.
*
* @param string $name Validator name
* @param mixed $param Additional validator parameter
* @return \Jyxo\Input\Fluent
* @throws \BadMethodCallException There is no active variable
*/
public function condition(string $name, $param = null) : self
{
$condChain = new Chain\Conditional($this->factory->getValidatorByName($name, $param));
if (true === $this->chain->isEmpty()) {
// The actual chain is empty, can be replaced by the condition
$this->chain = $condChain;
if (null === $this->currentName) {
throw new \BadMethodCallException('No active variable');
}
$this->chains[$this->currentName] = $condChain;
} else {
$this->chain = $this->chain->addCondition($condChain);
}
return $this;
}