diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-07 07:38:25 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2008-07-07 07:38:25 +0000 |
commit | 9ff1e787f915539b1980654e3d3d2013ff5c81d2 (patch) | |
tree | 8d0fc9ca5b4dbfa9885dc56862292d55091bcaac /ruby_1_8_6/lib/irb/completion.rb | |
parent | 441546edcfbb1b346c87b69c5f578d1a0e522e06 (diff) |
wrong commit; sorryv1_8_6_269
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_6_269@17938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_8_6/lib/irb/completion.rb')
-rw-r--r-- | ruby_1_8_6/lib/irb/completion.rb | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/ruby_1_8_6/lib/irb/completion.rb b/ruby_1_8_6/lib/irb/completion.rb deleted file mode 100644 index 000658e2a3..0000000000 --- a/ruby_1_8_6/lib/irb/completion.rb +++ /dev/null @@ -1,205 +0,0 @@ -# -# irb/completor.rb - -# $Release Version: 0.9$ -# $Revision$ -# $Date$ -# by Keiju ISHITSUKA(keiju@ishitsuka.com) -# From Original Idea of shugo@ruby-lang.org -# - -require "readline" - -module IRB - module InputCompletor - - @RCS_ID='-$Id$-' - - ReservedWords = [ - "BEGIN", "END", - "alias", "and", - "begin", "break", - "case", "class", - "def", "defined", "do", - "else", "elsif", "end", "ensure", - "false", "for", - "if", "in", - "module", - "next", "nil", "not", - "or", - "redo", "rescue", "retry", "return", - "self", "super", - "then", "true", - "undef", "unless", "until", - "when", "while", - "yield", - ] - - CompletionProc = proc { |input| - bind = IRB.conf[:MAIN_CONTEXT].workspace.binding - -# puts "input: #{input}" - - case input - when /^(\/[^\/]*\/)\.([^.]*)$/ - # Regexp - receiver = $1 - message = Regexp.quote($2) - - candidates = Regexp.instance_methods(true) - select_message(receiver, message, candidates) - - when /^([^\]]*\])\.([^.]*)$/ - # Array - receiver = $1 - message = Regexp.quote($2) - - candidates = Array.instance_methods(true) - select_message(receiver, message, candidates) - - when /^([^\}]*\})\.([^.]*)$/ - # Proc or Hash - receiver = $1 - message = Regexp.quote($2) - - candidates = Proc.instance_methods(true) | Hash.instance_methods(true) - select_message(receiver, message, candidates) - - when /^(:[^:.]*)$/ - # Symbol - if Symbol.respond_to?(:all_symbols) - sym = $1 - candidates = Symbol.all_symbols.collect{|s| ":" + s.id2name} - candidates.grep(/^#{sym}/) - else - [] - end - - when /^::([A-Z][^:\.\(]*)$/ - # Absolute Constant or class methods - receiver = $1 - candidates = Object.constants - candidates.grep(/^#{receiver}/).collect{|e| "::" + e} - - when /^(((::)?[A-Z][^:.\(]*)+)::?([^:.]*)$/ - # Constant or class methods - receiver = $1 - message = Regexp.quote($4) - begin - candidates = eval("#{receiver}.constants | #{receiver}.methods", bind) - rescue Exception - candidates = [] - end - candidates.grep(/^#{message}/).collect{|e| receiver + "::" + e} - - when /^(:[^:.]+)\.([^.]*)$/ - # Symbol - receiver = $1 - message = Regexp.quote($2) - - candidates = Symbol.instance_methods(true) - select_message(receiver, message, candidates) - - when /^(-?(0[dbo])?[0-9_]+(\.[0-9_]+)?([eE]-?[0-9]+)?)\.([^.]*)$/ - # Numeric - receiver = $1 - message = Regexp.quote($5) - - begin - candidates = eval(receiver, bind).methods - rescue Exception - candidates = [] - end - select_message(receiver, message, candidates) - - when /^(-?0x[0-9a-fA-F_]+)\.([^.]*)$/ - # Numeric(0xFFFF) - receiver = $1 - message = Regexp.quote($2) - - begin - candidates = eval(receiver, bind).methods - rescue Exception - candidates = [] - end - select_message(receiver, message, candidates) - - when /^(\$[^.]*)$/ - candidates = global_variables.grep(Regexp.new(Regexp.quote($1))) - -# when /^(\$?(\.?[^.]+)+)\.([^.]*)$/ - when /^((\.?[^.]+)+)\.([^.]*)$/ - # variable - receiver = $1 - message = Regexp.quote($3) - - gv = eval("global_variables", bind) - lv = eval("local_variables", bind) - cv = eval("self.class.constants", bind) - - if (gv | lv | cv).include?(receiver) - # foo.func and foo is local var. - candidates = eval("#{receiver}.methods", bind) - elsif /^[A-Z]/ =~ receiver and /\./ !~ receiver - # Foo::Bar.func - begin - candidates = eval("#{receiver}.methods", bind) - rescue Exception - candidates = [] - end - else - # func1.func2 - candidates = [] - ObjectSpace.each_object(Module){|m| - begin - name = m.name - rescue Exception - name = "" - end - next if name != "IRB::Context" and - /^(IRB|SLex|RubyLex|RubyToken)/ =~ name - candidates.concat m.instance_methods(false) - } - candidates.sort! - candidates.uniq! - end - select_message(receiver, message, candidates) - - when /^\.([^.]*)$/ - # unknown(maybe String) - - receiver = "" - message = Regexp.quote($1) - - candidates = String.instance_methods(true) - select_message(receiver, message, candidates) - - else - candidates = eval("methods | private_methods | local_variables | self.class.constants", bind) - - (candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/) - end - } - - Operators = ["%", "&", "*", "**", "+", "-", "/", - "<", "<<", "<=", "<=>", "==", "===", "=~", ">", ">=", ">>", - "[]", "[]=", "^",] - - def self.select_message(receiver, message, candidates) - candidates.grep(/^#{message}/).collect do |e| - case e - when /^[a-zA-Z_]/ - receiver + "." + e - when /^[0-9]/ - when *Operators - #receiver + " " + e - end - end - end - end -end - -if Readline.respond_to?("basic_word_break_characters=") - Readline.basic_word_break_characters= " \t\n\"\\'`><=;|&{(" -end -Readline.completion_append_character = nil -Readline.completion_proc = IRB::InputCompletor::CompletionProc |