Beispiel #1
0
 /**
  * Show the prompt to user and return the answer.
  *
  * @return mixed
  */
 public function show()
 {
     /**
      * Ask for a number and validate it.
      */
     do {
         $valid = true;
         $number = parent::show();
         if ($number === "" && !$this->allowEmpty) {
             $valid = false;
         } elseif ($number === "") {
             $number = null;
         } elseif (!is_numeric($number)) {
             $this->getConsole()->writeLine("{$number} is not a number\n");
             $valid = false;
         } elseif (!$this->allowFloat && round($number) != $number) {
             $this->getConsole()->writeLine("Please enter a non-floating number, i.e. " . round($number) . "\n");
             $valid = false;
         } elseif ($this->max !== null && $number > $this->max) {
             $this->getConsole()->writeLine("Please enter a number not greater than " . $this->max . "\n");
             $valid = false;
         } elseif ($this->min !== null && $number < $this->min) {
             $this->getConsole()->writeLine("Please enter a number not smaller than " . $this->min . "\n");
             $valid = false;
         }
     } while (!$valid);
     /**
      * Cast proper type
      */
     if ($number !== null) {
         $number = $this->allowFloat ? (double) $number : (int) $number;
     }
     return $this->lastResponse = $number;
 }
Beispiel #2
0
 public function testCanReadLineWithEmptyAnswer()
 {
     $line = new Line('Where is Bryan ?', true);
     $line->setConsole($this->adapter);
     ob_start();
     $response = $line->show();
     $text = ob_get_clean();
     $this->assertEquals($text, "Where is Bryan ?");
     $this->assertEquals('', $response);
 }
Beispiel #3
0
 /**
  * @param $question
  * @param ConsoleAdapter $console
  *
  * @return string|null
  */
 private function askUrlQuestion($question, ConsoleAdapter $console)
 {
     $console->writeLine($question . ' (URL)', ColorInterface::CYAN);
     $prompt = new Line('');
     $prompt->setConsole($console);
     $url = $prompt->show();
     if (!(new Uri(['allowRelative' => false]))->isValid($url)) {
         $console->writeLine('The provided URL "' . $url . '" doesn\'t seem to be valid!', ColorInterface::RED);
         return null;
     }
     return $url;
 }
Beispiel #4
0
 public function ask($promptText, $allowEmpty = false)
 {
     $prompt = new LinePrompt($promptText, $allowEmpty);
     $prompt->setConsole($this->console);
     return $prompt->show();
 }
Beispiel #5
0
 /**
  * Write a customizable line prompt
  *
  * @param $message
  *
  * @return string
  */
 public function writeLinePrompt($message)
 {
     $this->writeLine();
     // write prompt badge
     $this->writeBadge('badge_pick', Color::RED);
     // output prompt
     $prompt = new Line($this->translator->translate($message), false);
     $answer = $prompt->show();
     $this->writeLine();
     return $answer;
 }