class MiniReadline::AutoFileSource

A flexible file source for shell emulation.

Constants

EXTRACT

The regex for extraction of the root and pivot.

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/auto_file_source.rb, line 10
def initialize(_options)
  #Do nothing here!
end

Public Instance Methods

backslash?() click to toggle source

Does this file name use backslashes?

# File lib/mini_readline/read_line/edit/auto_complete/auto_file_source.rb, line 63
def backslash?
  if @pivot.end_with?("\\")
    true
  elsif @pivot.end_with?("/")
    false
  elsif @pivot["\\"]
    true
  elsif @pivot["/"]
    false
  else
    MiniTerm.windows?
  end
end
dress_down(name) click to toggle source

Prepare the file name for internal use. Endemic Code Smells :reek: UtilityFunction

# File lib/mini_readline/read_line/edit/auto_complete/auto_file_source.rb, line 39
def dress_down(name)
  name.gsub("\\", "/").gsub('"', '')
end
dress_up(name) click to toggle source

Prepare the file name for external use. Endemic Code Smells :reek: UtilityFunction

# File lib/mini_readline/read_line/edit/auto_complete/auto_file_source.rb, line 46
def dress_up(name)
  dress_up_quotes(dress_up_slashes(name))
end
dress_up_quotes(name) click to toggle source

Dress up in quotes if needed. Endemic Code Smells :reek: UtilityFunction

# File lib/mini_readline/read_line/edit/auto_complete/auto_file_source.rb, line 58
def dress_up_quotes(name)
  name[' '] ? "\"#{name}\"" : name
end
dress_up_slashes(name) click to toggle source

Dress up slashes and backslashes.

# File lib/mini_readline/read_line/edit/auto_complete/auto_file_source.rb, line 51
def dress_up_slashes(name)
  backslash? ? name.gsub("/", "\\") : name
end
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/auto_file_source.rb, line 27
def extract_root_pivot(str)
  @root, @pivot = EXTRACT =~ str ? [$PREMATCH, $MATCH] : [str, ""]
end
next() click to toggle source

Get the next string for auto-complete

# File lib/mini_readline/read_line/edit/auto_complete/auto_file_source.rb, line 32
def next
  @root + dress_up(@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/auto_file_source.rb, line 15
def rebuild(str)
  extract_root_pivot(str)

  list = Dir.glob(dress_down(@pivot) + '*')

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