class MiniReadline::ArraySource

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/mini_readline/read_line/edit/auto_complete/array_source.rb, line 10
def initialize(options)
  @options = options
end

Public Instance Methods

extract_root_pivot(str) click to toggle source

Parse the string into the two basic components.

# File lib/mini_readline/read_line/edit/auto_complete/array_source.rb, line 24
def extract_root_pivot(str)
  @root, @pivot = /\S+$/ =~ str ? [$PREMATCH, $MATCH] : [str, ""]
end
get_array() click to toggle source

Get the array of data from either an array or a block.

# File lib/mini_readline/read_line/edit/auto_complete/array_source.rb, line 29
def get_array
  if (src = @options[:array_src]).is_a?(Proc)
    src.call
  else
    src || []
  end
end
next() click to toggle source

Get the next string for auto-complete

# File lib/mini_readline/read_line/edit/auto_complete/array_source.rb, line 38
def next
  @root + @cycler.next
end
rebuild(str) click to toggle source

Construct a new data list for auto-complete

# File lib/mini_readline/read_line/edit/auto_complete/array_source.rb, line 15
def rebuild(str)
  extract_root_pivot(str)

  list = (get_array.select {|entry| entry.start_with?(@pivot)}).sort

  @cycler = list.empty? ? nil : list.cycle
end