You are here

ConfirmationQuestion.php in Zircon Profile 8

Same filename and directory in other branches
  1. 8.0 vendor/symfony/console/Question/ConfirmationQuestion.php

File

vendor/symfony/console/Question/ConfirmationQuestion.php
View source
<?php

/*
 * This file is part of the Symfony package.
 *
 * (c) Fabien Potencier <fabien@symfony.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */
namespace Symfony\Component\Console\Question;


/**
 * Represents a yes/no question.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 */
class ConfirmationQuestion extends Question {
  private $trueAnswerRegex;

  /**
   * Constructor.
   *
   * @param string $question        The question to ask to the user
   * @param bool   $default         The default answer to return, true or false
   * @param string $trueAnswerRegex A regex to match the "yes" answer
   */
  public function __construct($question, $default = true, $trueAnswerRegex = '/^y/i') {
    parent::__construct($question, (bool) $default);
    $this->trueAnswerRegex = $trueAnswerRegex;
    $this
      ->setNormalizer($this
      ->getDefaultNormalizer());
  }

  /**
   * Returns the default answer normalizer.
   *
   * @return callable
   */
  private function getDefaultNormalizer() {
    $default = $this
      ->getDefault();
    $regex = $this->trueAnswerRegex;
    return function ($answer) use ($default, $regex) {
      if (is_bool($answer)) {
        return $answer;
      }
      $answerIsTrue = (bool) preg_match($regex, $answer);
      if (false === $default) {
        return $answer && $answerIsTrue;
      }
      return !$answer || $answerIsTrue;
    };
  }

}

Classes

Namesort descending Description
ConfirmationQuestion Represents a yes/no question.