!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/smm.picotech.app/public_html/vendor/psy/psysh/src/TabCompletion/Matcher/   drwxr-xr-x
Free 28.57 GB of 117.98 GB (24.22%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     AbstractMatcher.php (4.82 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/*
 * This file is part of Psy Shell.
 *
 * (c) 2012-2023 Justin Hileman
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Psy\TabCompletion\Matcher;

/**
 * Abstract tab completion Matcher.
 *
 * @author Marc Garcia <markcial@gmail.com>
 */
abstract class AbstractMatcher
{
    
/** Syntax types */
    
const CONSTANT_SYNTAX '^[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$';
    const 
VAR_SYNTAX '^\$[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*$';
    const 
MISC_OPERATORS '+-*/^|&';
    
/** Token values */
    
const T_OPEN_TAG 'T_OPEN_TAG';
    const 
T_VARIABLE 'T_VARIABLE';
    const 
T_OBJECT_OPERATOR 'T_OBJECT_OPERATOR';
    const 
T_DOUBLE_COLON 'T_DOUBLE_COLON';
    const 
T_NEW 'T_NEW';
    const 
T_CLONE 'T_CLONE';
    const 
T_NS_SEPARATOR 'T_NS_SEPARATOR';
    const 
T_STRING 'T_STRING';
    const 
T_NAME_QUALIFIED 'T_NAME_QUALIFIED';
    const 
T_WHITESPACE 'T_WHITESPACE';
    const 
T_AND_EQUAL 'T_AND_EQUAL';
    const 
T_BOOLEAN_AND 'T_BOOLEAN_AND';
    const 
T_BOOLEAN_OR 'T_BOOLEAN_OR';

    const 
T_ENCAPSED_AND_WHITESPACE 'T_ENCAPSED_AND_WHITESPACE';
    const 
T_REQUIRE 'T_REQUIRE';
    const 
T_REQUIRE_ONCE 'T_REQUIRE_ONCE';
    const 
T_INCLUDE 'T_INCLUDE';
    const 
T_INCLUDE_ONCE 'T_INCLUDE_ONCE';

    
/**
     * Check whether this matcher can provide completions for $tokens.
     *
     * @param array $tokens Tokenized readline input
     *
     * @return false
     */
    
public function hasMatched(array $tokens): bool
    
{
        return 
false;
    }

    
/**
     * Get current readline input word.
     *
     * @param array $tokens Tokenized readline input (see token_get_all)
     */
    
protected function getInput(array $tokens): string
    
{
        
$var '';
        
$firstToken \array_pop($tokens);
        if (
self::tokenIs($firstTokenself::T_STRING)) {
            
$var $firstToken[1];
        }

        return 
$var;
    }

    
/**
     * Get current namespace and class (if any) from readline input.
     *
     * @param array $tokens Tokenized readline input (see token_get_all)
     */
    
protected function getNamespaceAndClass(array $tokens): string
    
{
        
$class '';
        while (
self::hasToken(
            [
self::T_NS_SEPARATORself::T_STRINGself::T_NAME_QUALIFIED],
            
$token \array_pop($tokens)
        )) {
            if (
self::needCompleteClass($token)) {
                continue;
            }

            
$class $token[1].$class;
        }

        return 
$class;
    }

    
/**
     * Provide tab completion matches for readline input.
     *
     * @param array $tokens information substracted with get_token_all
     * @param array $info   readline_info object
     *
     * @return array The matches resulting from the query
     */
    
abstract public function getMatches(array $tokens, array $info = []): array;

    
/**
     * Check whether $word starts with $prefix.
     *
     * @param string $prefix
     * @param string $word
     */
    
public static function startsWith(string $prefixstring $word): bool
    
{
        return 
\preg_match(\sprintf('#^%s#'$prefix), $word);
    }

    
/**
     * Check whether $token matches a given syntax pattern.
     *
     * @param mixed  $token  A PHP token (see token_get_all)
     * @param string $syntax A syntax pattern (default: variable pattern)
     */
    
public static function hasSyntax($tokenstring $syntax self::VAR_SYNTAX): bool
    
{
        if (!
\is_array($token)) {
            return 
false;
        }

        
$regexp \sprintf('#%s#'$syntax);

        return (bool) 
\preg_match($regexp$token[1]);
    }

    
/**
     * Check whether $token type is $which.
     *
     * @param mixed  $token A PHP token (see token_get_all)
     * @param string $which A PHP token type
     */
    
public static function tokenIs($tokenstring $which): bool
    
{
        if (!
\is_array($token)) {
            return 
false;
        }

        return 
\token_name($token[0]) === $which;
    }

    
/**
     * Check whether $token is an operator.
     *
     * @param mixed $token A PHP token (see token_get_all)
     */
    
public static function isOperator($token): bool
    
{
        if (!
\is_string($token)) {
            return 
false;
        }

        return 
\strpos(self::MISC_OPERATORS$token) !== false;
    }

    public static function 
needCompleteClass($token): bool
    
{
        return 
\in_array($token[1], ['doc''ls''show']);
    }

    
/**
     * Check whether $token type is present in $coll.
     *
     * @param array $coll  A list of token types
     * @param mixed $token A PHP token (see token_get_all)
     */
    
public static function hasToken(array $coll$token): bool
    
{
        if (!
\is_array($token)) {
            return 
false;
        }

        return 
\in_array(\token_name($token[0]), $coll);
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0038 ]--