CasperSecurity

Current Path : /usr/share/bash-completion/completions/
Upload File :
Current File : //usr/share/bash-completion/completions/ri

# ri completion for Ruby documentation                     -*- shell-script -*-
# by Ian Macdonald <ian@caliban.org>

_ri_get_methods()
{
    local regex

    if [[ $ri_version == integrated ]]; then
        if [[ -z $separator ]]; then
            regex="(Instance|Class)"
        elif [[ $separator == "#" ]]; then
            regex=Instance
        else
            regex=Class
        fi

        COMPREPLY+=(
            "$(ri "${classes[@]}" 2>/dev/null | ruby -ane \
                'if /^'"$regex"' methods:/.../^------------------|^$/ and \
            /^ / then print $_.split(/, |,$/).grep(/^[^\[]*$/).join("\n"); \
            end' 2>/dev/null | sort -u)")
    else
        # older versions of ri didn't distinguish between class/module and
        # instance methods
        COMPREPLY+=(
            "$(ruby -W0 $ri_path "${classes[@]}" 2>/dev/null | ruby -ane \
                'if /^-/.../^-/ and ! /^-/ and ! /^ +(class|module): / then \
            print $_.split(/, |,$| +/).grep(/^[^\[]*$/).join("\n"); \
            end' | sort -u)")
    fi
    COMPREPLY=($(compgen $prefix -W '${COMPREPLY[@]}' -- $method))
}

# needs at least Ruby 1.8.0 in order to use -W0
_ri()
{
    local cur prev words cword split
    _init_completion -s -n : || return

    case $prev in
        --help | --width | -!(-*)[hw])
            return
            ;;
        --format | -!(-*)f)
            COMPREPLY=($(compgen -W 'ansi bs html rdoc' -- "$cur"))
            return
            ;;
        --doc-dir | -!(-*)d)
            _filedir -d
            return
            ;;
        --dump)
            _filedir ri
            return
            ;;
    esac

    $split && return

    if [[ $cur == -* ]]; then
        COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur"))
        [[ ${COMPREPLY-} == *= ]] && compopt -o nospace
        return
    fi

    local class method prefix ri_path ri_version ri_major separator IFS
    local -a classes

    ri_path=$(type -p ri)
    # which version of ri are we using?
    # -W0 is required here to stop warnings from older versions of ri
    # from being captured when used with Ruby 1.8.1 and later
    ri_version="$(ruby -W0 $ri_path -v 2>&1)" || ri_version=integrated
    [[ $ri_version != "${ri_version%200*}" ]] && ri_version=integrated
    [[ $ri_version =~ ri[[:space:]]v?([0-9]+) ]] && ri_major=${BASH_REMATCH[1]}

    # need to also split on commas
    IFS=$', \n\t'
    if [[ $cur == [A-Z]*[#.]* ]]; then
        [[ $cur == *#* ]] && separator=# || separator=.
        # we're completing on class and method
        class=${cur%$separator*}
        method=${cur#*$separator}
        classes=($class)
        prefix="-P $class$separator"
        _ri_get_methods
        return
    fi

    if [[ $ri_version == integrated ]]; then
        # integrated ri from Ruby 1.9
        classes=($(ri -c 2>/dev/null | ruby -ne 'if /^\s*$/..$stdin.eof then \
        if /^ +[A-Z]/ then print; end; end' 2>/dev/null))
    elif [[ $ri_major && $ri_major -ge 3 ]]; then
        classes=($(ri -l 2>/dev/null))
    elif [[ $ri_version == "ri 1.8a" ]]; then
        classes=($(ruby -W0 $ri_path |
            ruby -ne 'if /^'"'"'ri'"'"' has/..$stdin.eof then \
            if /^ .*[A-Z]/ then print; end; end'))
    else
        classes=($(ruby -W0 $ri_path |
            ruby -ne 'if /^I have/..$stdin.eof then \
                if /^ .*[A-Z]/ then print; end; end'))
    fi

    COMPREPLY=($(compgen -W '${classes[@]}' -- "$cur"))
    __ltrim_colon_completions "$cur"

    if [[ $cur == [A-Z]* ]]; then
        # we're completing on class or module alone
        return
    fi

    # we're completing on methods
    method=$cur
    _ri_get_methods
} &&
    complete -F _ri ri

# ex: filetype=sh
Hacker Blog, Shell İndir, Sql İnjection, XSS Attacks, LFI Attacks, Social Hacking, Exploit Bot, Proxy Tools, Web Shell, PHP Shell, Alfa Shell İndir, Hacking Training Set, DDoS Script, Denial Of Service, Botnet, RFI Attacks, Encryption
Telegram @BIBIL_0DAY