module

IRB::InputCompletor

No documentation available for this module.

Constants

CompletionProc = proc { |input|\nbind = IRB.conf[:MAIN_CONTEXT].workspace.binding\n\ncase input\nwhen /^((["'`]).*\\2)\\.([^.]*)$/\n# String\nreceiver = $1\nmessage = Regexp.quote($3)\n\ncandidates = String.instance_methods.collect{|m| m.to_s}\nselect_message(receiver, message, candidates)\n\nwhen /^(\\/[^\\/]*\\/)\\.([^.]*)$/\n# Regexp\nreceiver = $1\nmessage = Regexp.quote($2)\n\ncandidates = Regexp.instance_methods.collect{|m| m.to_s}\nselect_message(receiver, message, candidates)\n\nwhen /^([^\\]]*\\])\\.([^.]*)$/\n# Array\nreceiver = $1\nmessage = Regexp.quote($2)\n\ncandidates = Array.instance_methods.collect{|m| m.to_s}\nselect_message(receiver, message, candidates)\n\nwhen /^([^\\}]*\\})\\.([^.]*)$/\n# Proc or Hash\nreceiver = $1\nmessage = Regexp.quote($2)\n\ncandidates = Proc.instance_methods.collect{|m| m.to_s}\ncandidates |= Hash.instance_methods.collect{|m| m.to_s}\nselect_message(receiver, message, candidates)\n\nwhen /^(:[^:.]*)$/\n# Symbol\nif Symbol.respond_to?(:all_symbols)\nsym = $1\ncandidates = Symbol.all_symbols.collect{|s| ":" + s.id2name}\ncandidates.grep(/^#{Regexp.quote(sym)}/)\nelse\n[]\nend\n\nwhen /^::([A-Z][^:\\.\\(]*)$/\n# Absolute Constant or class methods\nreceiver = $1\ncandidates = Object.constants.collect{|m| m.to_s}\ncandidates.grep(/^#{receiver}/).collect{|e| "::" + e}\n\nwhen /^([A-Z].*)::([^:.]*)$/\n# Constant or class methods\nreceiver = $1\nmessage = Regexp.quote($2)\nbegin\ncandidates = eval("#{receiver}.constants.collect{|m| m.to_s}", bind)\ncandidates |= eval("#{receiver}.methods.collect{|m| m.to_s}", bind)\nrescue Exception\ncandidates = []\nend\nselect_message(receiver, message, candidates, "::")\n\nwhen /^(:[^:.]+)(\\.|::)([^.]*)$/\n# Symbol\nreceiver = $1\nsep = $2\nmessage = Regexp.quote($3)\n\ncandidates = Symbol.instance_methods.collect{|m| m.to_s}\nselect_message(receiver, message, candidates, sep)\n\nwhen /^(-?(0[dbo])?[0-9_]+(\\.[0-9_]+)?([eE]-?[0-9]+)?)(\\.|::)([^.]*)$/\n# Numeric\nreceiver = $1\nsep = $5\nmessage = Regexp.quote($6)\n\nbegin\ncandidates = eval(receiver, bind).methods.collect{|m| m.to_s}\nrescue Exception\ncandidates = []\nend\nselect_message(receiver, message, candidates, sep)\n\nwhen /^(-?0x[0-9a-fA-F_]+)(\\.|::)([^.]*)$/\n# Numeric(0xFFFF)\nreceiver = $1\nsep = $2\nmessage = Regexp.quote($3)\n\nbegin\ncandidates = eval(receiver, bind).methods.collect{|m| m.to_s}\nrescue Exception\ncandidates = []\nend\nselect_message(receiver, message, candidates, sep)\n\nwhen /^(\\$[^.]*)$/\n# global var\nregmessage = Regexp.new(Regexp.quote($1))\ncandidates = global_variables.collect{|m| m.to_s}.grep(regmessage)\n\nwhen /^([^."].*)(\\.|::)([^.]*)$/\n# variable.func or func.func\nreceiver = $1\nsep = $2\nmessage = Regexp.quote($3)\n\ngv = eval("global_variables", bind).collect{|m| m.to_s}\nlv = eval("local_variables", bind).collect{|m| m.to_s}\niv = eval("instance_variables", bind).collect{|m| m.to_s}\ncv = eval("self.class.constants", bind).collect{|m| m.to_s}\n\nif (gv | lv | iv | cv).include?(receiver) or /^[A-Z]/ =~ receiver && /\\./ !~ receiver\n# foo.func and foo is var. OR\n# foo::func and foo is var. OR\n# foo::Const and foo is var. OR\n# Foo::Bar.func\nbegin\ncandidates = []\nrec = eval(receiver, bind)\nif sep == "::" and rec.kind_of?(Module)\ncandidates = rec.constants.collect{|m| m.to_s}\nend\ncandidates |= rec.methods.collect{|m| m.to_s}\nrescue Exception\ncandidates = []\nend\nelse\n# func1.func2\ncandidates = []\nto_ignore = ignored_modules\nObjectSpace.each_object(Module){|m|\nnext if (to_ignore.include?(m) rescue true)\ncandidates.concat m.instance_methods(false).collect{|x| x.to_s}\n}\ncandidates.sort!\ncandidates.uniq!\nend\nselect_message(receiver, message, candidates, sep)\n\nwhen /^\\.([^.]*)$/\n# unknown(maybe String)\n\nreceiver = ""\nmessage = Regexp.quote($1)\n\ncandidates = String.instance_methods(true).collect{|m| m.to_s}\nselect_message(receiver, message, candidates)\n\nelse\ncandidates = eval("methods | private_methods | local_variables | instance_variables | self.class.constants", bind).collect{|m| m.to_s}\n\n(candidates|ReservedWords).grep(/^#{Regexp.quote(input)}/)\nend\n}

Operators = %w[% & * ** + - / < << <= <=> == === =~ > >= >> [] []= ^ ! != !~]

ReservedWords = %w[\nBEGIN END\nalias and\nbegin break\ncase class\ndef defined do\nelse elsif end ensure\nfalse for\nif in\nmodule\nnext nil not\nor\nredo rescue retry return\nself super\nthen true\nundef unless until\nwhen while\nyield\n]

Files

  • lib/irb/completion.rb