本文整理汇总了PHP中readline_info函数的典型用法代码示例。如果您正苦于以下问题:PHP readline_info函数的具体用法?PHP readline_info怎么用?PHP readline_info使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了readline_info函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: autocompleter
/**
* Tries to return autocompletion for the current entered text.
*
* @param string $text The last segment of the entered text
* @param integer $position The current position
*/
protected function autocompleter($text, $position)
{
$info = readline_info();
$text = substr($info['line_buffer'], 0, $info['end']);
if ($info['point'] !== $info['end']) {
return true;
}
// task name?
if (false === strpos($text, ' ') || !$text) {
return array_keys($this->application->getCommands());
}
// options and arguments?
try {
$command = $this->application->findCommand(substr($text, 0, strpos($text, ' ')));
} catch (\Exception $e) {
return true;
}
$list = array('--help');
foreach ($command->getDefinition()->getOptions() as $option) {
$list[] = '--' . $option->getName();
}
if (method_exists($command, 'getAutocompleteValues')) {
foreach ($command->getAutocompleteValues() as $value) {
$list[] = $value;
}
}
return $list;
}
示例2: get_real_keyword
protected static function get_real_keyword($keyword) {
$info = readline_info();
if(!is_array($info) or !isset($info['pending_input']))
return $keyword;
return substr($info['line_buffer'], 0, $info['end']);
}
示例3: _initCompletion
protected static function _initCompletion()
{
self::$_readlineFile = sys_get_temp_dir() . '/phputils-data-history';
// init read line
readline_info('readline_name', 'data');
readline_completion_function([__CLASS__, 'readlineCompletion']);
is_file(self::$_readlineFile) and readline_read_history(self::$_readlineFile);
}
示例4: complete
/**
* @param string $input
* @param int $index
* @return array|bool
*/
public function complete($input, $index)
{
$configuration = $this->configuration;
if ($index == 0) {
$completion = array_keys($configuration);
} else {
$buffer = preg_replace('/\\s+/', ' ', trim(readline_info('line_buffer')));
$tokens = explode(' ', $buffer);
$completion = $this->fetchCompletion($configuration, $tokens);
}
return $completion;
}
示例5: info
function info()
{
$config = new Configuration();
$core = array('PsySH version' => Shell::VERSION, 'PHP version' => PHP_VERSION, 'default includes' => $config->getDefaultIncludes(), 'require semicolons' => $config->requireSemicolons(), 'error logging level' => $config->errorLoggingLevel(), 'config file' => array('default config file' => $config->getConfigFile(), 'local config file' => $config->getLocalConfigFile(), 'PSYSH_CONFIG env' => getenv('PSYSH_CONFIG')));
if ($config->hasReadline()) {
$info = readline_info();
$readline = array('readline available' => true, 'readline enabled' => $config->useReadline(), 'readline service' => get_class($config->getReadline()), 'readline library' => $info['library_version']);
if ($info['readline_name'] !== '') {
$readline['readline name'] = $info['readline_name'];
}
} else {
$readline = array('readline available' => false);
}
$pcntl = array('pcntl available' => function_exists('pcntl_signal'), 'posix available' => function_exists('posix_getpid'));
$history = array('history file' => $config->getHistoryFile(), 'history size' => $config->getHistorySize(), 'erase duplicates' => $config->getEraseDuplicates());
$docs = array('manual db file' => $config->getManualDbFile(), 'sqlite available' => true);
try {
if ($db = $config->getManualDb()) {
if ($q = $db->query('SELECT * FROM meta;')) {
$q->setFetchMode(\PDO::FETCH_KEY_PAIR);
$meta = $q->fetchAll();
foreach ($meta as $key => $val) {
switch ($key) {
case 'built_at':
$d = new \DateTime('@' . $val);
$val = $d->format(\DateTime::RFC2822);
break;
}
$key = 'db ' . str_replace('_', ' ', $key);
$docs[$key] = $val;
}
} else {
$docs['db schema'] = '0.1.0';
}
}
} catch (Exception\RuntimeException $e) {
if ($e->getMessage() === 'SQLite PDO driver not found') {
$docs['sqlite available'] = false;
} else {
throw $e;
}
}
$autocomplete = array('tab completion enabled' => $config->getTabCompletion(), 'custom matchers' => array_map('get_class', $config->getTabCompletionMatchers()));
return array_merge($core, compact('pcntl', 'readline', 'history', 'docs', 'autocomplete'));
}
示例6: _rlAutoCompleteProxy
/**
* @brief Proxy for autocomplete calls
* @internal
*/
static function _rlAutoCompleteProxy($input, $index)
{
// Collect some information and perform the call if we have a completer
// assigned.
$info = readline_info();
if (self::$completer) {
$matches = self::$completer->complete($input, $index, $info);
} else {
// Maybe return true here if no data would help from the crash?
$matches = array();
}
// Check the number of matches, and push a null character if empty,
// in order to avoid the php segfault bug.
if (count($matches) == 0) {
$matches[] = chr(0);
}
// Return the data
return $matches;
}
示例7: readline_completion_impl
function readline_completion_impl($string, $index)
{
$readline_info = readline_info();
$line = substr($readline_info['line_buffer'], 0, $readline_info['end']);
$parts = Helper_Common::parseCommand($line);
$candidates = array();
if (empty($parts)) {
// no input yet, just return list of helper functions
$candidates += array_keys($GLOBALS['HELPERS']);
} else {
if (isset($GLOBALS['HELPERS'][$parts[0]])) {
// we actually got the helper function correctly
$PARAMS = array_slice($parts, 1);
$IS_COMPLETION = true;
require $GLOBALS['HELPERS'][$parts[0]];
} else {
// incomplete helper function...
$candidates += array_keys($GLOBALS['HELPERS']);
}
}
return $candidates;
}
示例8: var_dump
<?php
var_dump(@readline_info());
var_dump(@readline_info(1));
var_dump(@readline_info(1, 1));
var_dump(@readline_info('line_buffer'));
var_dump(@readline_info('readline_name'));
var_dump(@readline_info('readline_name', 1));
var_dump(@readline_info('readline_name'));
var_dump(@readline_info('attempted_completion_over', 1));
var_dump(@readline_info('attempted_completion_over'));
示例9: writeln
/**
* prints a line to stdout
*/
function writeln($s)
{
if ($this->hide) {
return;
}
if ($this->promptShown && !$this->gettingInput) {
/* something will be displayed, so remove the prompt */
// see how long the text is
$l = readline_info('end') + strlen($this->prompt);
// remove it
$this->write("\r" . str_repeat(' ', $l) . "\r");
$this->promptShown = FALSE;
}
$this->write("{$s}\n");
}
示例10: autocomplete
/**
* Autocomplete variable names.
*
* This is used by `readline` for tab completion.
*
* @param string $text
*
* @return mixed Array possible completions for the given input, if any.
*/
protected function autocomplete($text)
{
$info = readline_info();
// $line = substr($info['line_buffer'], 0, $info['end']);
// Check whether there's a command for this
// $words = explode(' ', $line);
// $firstWord = reset($words);
// check whether this is a variable...
$firstChar = substr($info['line_buffer'], max(0, $info['end'] - strlen($text) - 1), 1);
if ($firstChar === '$') {
return $this->getScopeVariableNames();
}
}
示例11: readline_predefined
function readline_predefined($prompt, $predefined_text = "")
{
global $readline, $prompt_finished;
readline_callback_handler_install($prompt, 'readline_callback');
for ($i = 0; $i < strlen($predefined_text); $i++) {
readline_info('pending_input', substr($predefined_text, $i, 1));
readline_callback_read_char();
}
$readline = FALSE;
$prompt_finished = FALSE;
while (!$prompt_finished) {
readline_callback_read_char();
}
return $readline;
}
示例12: getVar
/**
* Get an internal readline variable
*
* @param const name e.g. RL_LIBRARY_VERSION
* @return string
*/
public function getVar($name)
{
return readline_info($name);
}
示例13: autocompleter
/**
* Tries to return autocompletion for the current entered text.
*
*
* @return bool|array A list of guessed strings or true
* @codeCoverageIgnore
*/
private function autocompleter()
{
$info = readline_info();
$text = substr($info['line_buffer'], 0, $info['end']);
if ($info['point'] !== $info['end']) {
return true;
}
// task name?
if (false === strpos($text, ' ') || !$text) {
$commands = array_keys($this->application->all());
$commands[] = 'quit';
$commands[] = 'all';
return $commands;
}
// options and arguments?
try {
$command = $this->application->find(substr($text, 0, strpos($text, ' ')));
} catch (\Exception $e) {
return true;
}
$list = array('--help');
foreach ($command->getDefinition()->getOptions() as $option) {
$opt = '--' . $option->getName();
if (!in_array($opt, $list)) {
$list[] = $opt;
}
}
return $list;
}
示例14: readline
<?php
//get 3 commands from user
for ($i = 0; $i < 3; $i++) {
$line = readline("Command: ");
readline_add_history($line);
}
//dump history
print_r(readline_list_history());
//dump variables
print_r(readline_info());
示例15: readio_readline
/**
* 可以处理IO的readline
*/
public function readio_readline($prompt)
{
readline_callback_handler_install($prompt, array($this, 'readio_handler'));
$this->_inputLine = '';
$this->_inputFinished = false;
while (!$this->_inputFinished) {
$w = NULL;
$e = NULL;
$r = array(STDIN);
$n = @stream_select($r, $w, $e, null);
// var_dump($n, $r, $w, $e);
if ($n === false) {
// echo "io incrupt\n";
// exit;
} else {
if ($n && in_array(STDIN, $r)) {
// read a character, will call the callback when a newline is entered
readline_callback_read_char();
$rli = readline_info();
// print_r($rli);
}
}
}
return $this->_inputLine;
}