%PDF- %PDF-
Direktori : /snap/core20/2434/usr/share/bash-completion/completions/ |
Current File : //snap/core20/2434/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