Heres a scratch file I've been toying with tonight. For the heck of it I thought I'd toy around with trying to break a $PATH like string apart into some thing a program or file could be looked up and then try to add a primitive file name completion to after tinkering awhile.
clean up comments, finish playing with the Abbrev class, toy with trying to match up a regex to an abbrev to a filename, worry about rest afterwards.
#!/usr/local/bin/ruby -w # Build a hash table from a $PATH like string that we can use for calling # commands. require 'abbrev' require 'pp' PDEBUG=1 # Programmers DEBUG on path = '/bin:/sbin:/usr/bin:/usr/sbin' # Create a hash for $PATH # # Arguments: # path => string containing a list of directories delimited by separator # separator => Any delimiter suitable for String#each # # Return value: # A hash where keys are directory names and values are handles to those # directories. def make_pathhash( path, separator=':' ) hash = Hash.new() # Parse path for directories path.each( separator ) do |dir| dir.gsub!( /:/, '' ) # Creates a key from path containing a directory name hash[dir] = dir #Dir.open( dir ) end return( hash ) end # Create a hash from the current directory to assist filename completion # # Arguments: # directory => A directory to create the hash from # # Return value: # An hash of filename => filenames from directory # def make_chdirhash( directory ) hash = Hash.new() dirh = Dir.open( directory ) dirh.each do |file| hash[file] = file end return( hash ) end if PDEBUG h = make_pathhash( path ) cd = make_chdirhash( '.' ) pp Abbrev::abbrev( cd.to_a.flatten ).sort end
Not bad for an idiot just screwing around if you ask me.
Also to do tomorrow, finish that thing I was doing before dinner.