当前位置: 首页>>代码示例>>PHP>>正文


PHP Question::getAutocompleterValues方法代码示例

本文整理汇总了PHP中Symfony\Component\Console\Question\Question::getAutocompleterValues方法的典型用法代码示例。如果您正苦于以下问题:PHP Question::getAutocompleterValues方法的具体用法?PHP Question::getAutocompleterValues怎么用?PHP Question::getAutocompleterValues使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Symfony\Component\Console\Question\Question的用法示例。


在下文中一共展示了Question::getAutocompleterValues方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: autocomplete

 /**
  * Autocompletes a question.
  *
  * @param OutputInterface $output
  * @param Question        $question
  *
  * @return string
  */
 private function autocomplete(OutputInterface $output, Question $question, $inputStream)
 {
     $autocomplete = $question->getAutocompleterValues();
     $ret = '';
     $i = 0;
     $ofs = -1;
     $matches = $autocomplete;
     $numMatches = count($matches);
     $sttyMode = shell_exec('stty -g');
     // Disable icanon (so we can fread each keypress) and echo (we'll do echoing here instead)
     shell_exec('stty -icanon -echo');
     // Add highlighted text style
     $output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white'));
     // Read a keypress
     while (!feof($inputStream)) {
         $c = fread($inputStream, 1);
         // Backspace Character
         if ("" === $c) {
             if (0 === $numMatches && 0 !== $i) {
                 --$i;
                 // Move cursor backwards
                 $output->write("[1D");
             }
             if ($i === 0) {
                 $ofs = -1;
                 $matches = $autocomplete;
                 $numMatches = count($matches);
             } else {
                 $numMatches = 0;
             }
             // Pop the last character off the end of our string
             $ret = substr($ret, 0, $i);
         } elseif ("" === $c) {
             // Did we read an escape sequence?
             $c .= fread($inputStream, 2);
             // A = Up Arrow. B = Down Arrow
             if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) {
                 if ('A' === $c[2] && -1 === $ofs) {
                     $ofs = 0;
                 }
                 if (0 === $numMatches) {
                     continue;
                 }
                 $ofs += 'A' === $c[2] ? -1 : 1;
                 $ofs = ($numMatches + $ofs) % $numMatches;
             }
         } elseif (ord($c) < 32) {
             if ("\t" === $c || "\n" === $c) {
                 if ($numMatches > 0 && -1 !== $ofs) {
                     $ret = $matches[$ofs];
                     // Echo out remaining chars for current match
                     $output->write(substr($ret, $i));
                     $i = strlen($ret);
                 }
                 if ("\n" === $c) {
                     $output->write($c);
                     break;
                 }
                 $numMatches = 0;
             }
             continue;
         } else {
             $output->write($c);
             $ret .= $c;
             ++$i;
             $numMatches = 0;
             $ofs = 0;
             foreach ($autocomplete as $value) {
                 // If typed characters match the beginning chunk of value (e.g. [AcmeDe]moBundle)
                 if (0 === strpos($value, $ret) && $i !== strlen($value)) {
                     $matches[$numMatches++] = $value;
                 }
             }
         }
         // Erase characters from cursor to end of line
         $output->write("[K");
         if ($numMatches > 0 && -1 !== $ofs) {
             // Save cursor position
             $output->write("7");
             // Write highlighted text
             $output->write('<hl>' . substr($matches[$ofs], $i) . '</hl>');
             // Restore cursor position
             $output->write("8");
         }
     }
     // Reset stty so it behaves normally again
     shell_exec(sprintf('stty %s', $sttyMode));
     return $ret;
 }
开发者ID:unexge,项目名称:symfony,代码行数:97,代码来源:QuestionHelper.php

示例2: autocomplete

 private function autocomplete(OutputInterface $output, Question $question, $inputStream)
 {
     $autocomplete = $question->getAutocompleterValues();
     $ret = '';
     $i = 0;
     $ofs = -1;
     $matches = $autocomplete;
     $numMatches = count($matches);
     $sttyMode = shell_exec('stty -g');
     shell_exec('stty -icanon -echo');
     $output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white'));
     while (!feof($inputStream)) {
         $c = fread($inputStream, 1);
         if ("" === $c) {
             if (0 === $numMatches && 0 !== $i) {
                 --$i;
                 $output->write("[1D");
             }
             if ($i === 0) {
                 $ofs = -1;
                 $matches = $autocomplete;
                 $numMatches = count($matches);
             } else {
                 $numMatches = 0;
             }
             $ret = substr($ret, 0, $i);
         } elseif ("" === $c) {
             $c .= fread($inputStream, 2);
             if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) {
                 if ('A' === $c[2] && -1 === $ofs) {
                     $ofs = 0;
                 }
                 if (0 === $numMatches) {
                     continue;
                 }
                 $ofs += 'A' === $c[2] ? -1 : 1;
                 $ofs = ($numMatches + $ofs) % $numMatches;
             }
         } elseif (ord($c) < 32) {
             if ("\t" === $c || "\n" === $c) {
                 if ($numMatches > 0 && -1 !== $ofs) {
                     $ret = $matches[$ofs];
                     $output->write(substr($ret, $i));
                     $i = strlen($ret);
                 }
                 if ("\n" === $c) {
                     $output->write($c);
                     break;
                 }
                 $numMatches = 0;
             }
             continue;
         } else {
             $output->write($c);
             $ret .= $c;
             ++$i;
             $numMatches = 0;
             $ofs = 0;
             foreach ($autocomplete as $value) {
                 if (0 === strpos($value, $ret) && $i !== strlen($value)) {
                     $matches[$numMatches++] = $value;
                 }
             }
         }
         $output->write("[K");
         if ($numMatches > 0 && -1 !== $ofs) {
             $output->write("7");
             $output->write('<hl>' . substr($matches[$ofs], $i) . '</hl>');
             $output->write("8");
         }
     }
     shell_exec(sprintf('stty %s', $sttyMode));
     return $ret;
 }
开发者ID:Ryu0621,项目名称:SaNaVi,代码行数:74,代码来源:QuestionHelper.php


注:本文中的Symfony\Component\Console\Question\Question::getAutocompleterValues方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。