Module: Bond::M
Overview
Takes international quagmires (a user’s completion setup) and passes them on as missions to an Agent.
Instance Method Summary (collapse)
-
- (Object) agent
See #agent.
-
- (Object) complete(options = {}, &block)
See #complete.
-
- (Object) config
See #config.
-
- (Object) debrief(options = {})
Validates and sets values in M.config.
-
- (Object) find_gem_file(rubygem, file)
Finds the full path to a gem’s file relative it’s load path directory.
-
- (Object) home
Find a user’s home in a cross-platform way.
-
- (Object) load_dir(base_dir)
Loads completion files in given directory.
-
- (Object) load_file(file)
Loads a completion file in Rc namespace.
-
- (Object) recomplete(options = {}, &block)
See #recomplete.
-
- (Object) reset
Resets M by deleting all missions.
-
- (Object) spy(input)
See #spy.
-
- (Object) start(options = {}, &block)
See #start.
Instance Method Details
- (Object) agent
See Bond#agent
27 28 29 |
# File 'lib/bond/m.rb', line 27 def agent @agent ||= Agent.new(config) end |
- (Object) complete(options = {}, &block)
See Bond#complete
7 8 9 10 11 12 13 14 |
# File 'lib/bond/m.rb', line 7 def complete(={}, &block) if (result = agent.complete(, &block)).is_a?(String) $stderr.puts "Bond Error: "+result false else true end end |
- (Object) config
See Bond#config
32 33 34 |
# File 'lib/bond/m.rb', line 32 def config @config ||= {:readline_plugin=>Bond::Readline, :debug=>false, :default_search=>:underscore} end |
- (Object) debrief(options = {})
Validates and sets values in M.config.
48 49 50 51 52 53 54 55 |
# File 'lib/bond/m.rb', line 48 def debrief(={}) config.merge! plugin_methods = %w{setup line_buffer} unless config[:readline_plugin].is_a?(Module) && plugin_methods.all? {|e| config[:readline_plugin].instance_methods.map {|f| f.to_s}.include?(e)} $stderr.puts "Bond Error: Invalid readline plugin given." end end |
- (Object) find_gem_file(rubygem, file)
Finds the full path to a gem’s file relative it’s load path directory. Returns nil if not found.
66 67 68 69 |
# File 'lib/bond/m.rb', line 66 def find_gem_file(rubygem, file) begin gem(rubygem); rescue Exception; end (dir = $:.find {|e| File.exists?(File.join(e, file)) }) && File.join(dir, file) end |
- (Object) home
Find a user’s home in a cross-platform way
86 87 88 89 90 91 92 |
# File 'lib/bond/m.rb', line 86 def home ['HOME', 'USERPROFILE'].each {|e| return ENV[e] if ENV[e] } return "#{ENV['HOMEDRIVE']}#{ENV['HOMEPATH']}" if ENV['HOMEDRIVE'] && ENV['HOMEPATH'] File.("~") rescue File::ALT_SEPARATOR ? "C:/" : "/" end |
- (Object) load_dir(base_dir)
Loads completion files in given directory.
79 80 81 82 83 |
# File 'lib/bond/m.rb', line 79 def load_dir(base_dir) if File.exists?(dir = File.join(base_dir, 'completions')) Dir[dir + '/*.rb'].each {|file| load_file(file) } end end |
- (Object) load_file(file)
Loads a completion file in Rc namespace.
72 73 74 75 76 |
# File 'lib/bond/m.rb', line 72 def load_file(file) Rc.module_eval File.read(file) rescue Exception => e $stderr.puts "Bond Error: Completion file '#{file}' failed to load with:", e. end |
- (Object) recomplete(options = {}, &block)
See Bond#recomplete
17 18 19 20 21 22 23 24 |
# File 'lib/bond/m.rb', line 17 def recomplete(={}, &block) if (result = agent.recomplete(, &block)).is_a?(String) $stderr.puts "Bond Error: "+result false else true end end |
- (Object) reset
Resets M by deleting all missions.
37 38 39 40 |
# File 'lib/bond/m.rb', line 37 def reset MethodMission.reset @agent = nil end |
- (Object) spy(input)
See Bond#spy
43 44 45 |
# File 'lib/bond/m.rb', line 43 def spy(input) agent.spy(input) end |
- (Object) start(options = {}, &block)
See Bond#start
58 59 60 61 62 63 |
# File 'lib/bond/m.rb', line 58 def start(={}, &block) debrief load_completions Rc.module_eval(&block) if block true end |