class Mysh::SmartSource

An array as the source for auto-complete.

Public Class Methods

new(options) click to toggle source

Create a new file/folder auto-data source. NOP

# File lib/mysh/sources/smart_auto_complete.rb, line 10
def initialize(options)
  @prefix        = options[:prefix]
  @auto_source   = MiniReadline::AutoFileSource.new(options)
  @quote_source  = MiniReadline::QuotedFileFolderSource.new(options)
  @active_source = nil
end

Public Instance Methods

next() click to toggle source

Get the next string for auto-complete

# File lib/mysh/sources/smart_auto_complete.rb, line 30
def next
  @active_source ? @active_source.next : @str
end
rebuild(str) click to toggle source

Construct a new data list for auto-complete

# File lib/mysh/sources/smart_auto_complete.rb, line 18
def rebuild(str)
  if /(?<=\s|^)\$[a-z][a-z0-9_]*\z/ =~ str
    sym = $MATCH[1..-1].to_sym
    @active_source = nil
    return @str = $PREMATCH + MNV[sym] if MNV.key?(sym)
  end

  @active_source = (@prefix || str[0]) == '=' ? @quote_source : @auto_source
  @active_source.rebuild(str)
end