an instance
local input
before_each -> input = inputs[name]!
should_complete() returns true
assert.is_true input\should_complete!
value_for(text) returns a File for <text>
file = directory\join('test.lua')
file\touch!
assert.equal file, input\value_for 'test.lua'
go_back(readline) goes up a directory
input\go_back readline
assert.equal directory, input\value_for directory.basename
complete(text, readline)
automatically switches to root dir if the text is "/"
input\complete '', readline
readline.text ..= '/'
input\complete readline.text, readline
assert.equals 'open /', readline.prompt
automatically switches to the home dir if the text is "~/"
input\complete '', readline
readline.text ..= '~/'
input\complete readline.text, readline
assert.equals "open ~/", readline.prompt
automatically opens directory if text has trailing "/"
sub = directory\join('sub')
sub\mkdir!
readline.text ..= 'sub/'
input\complete readline.text, readline
assert.equals "open #{sub.path}/", readline.prompt
on_completed(path, readline)
changes dir and returns false when <path> is a directory
sub = directory\join('sub')
sub\mkdir!
sub\join('subdir')\mkdir!
assert.is_false input\on_completed 'sub', readline
readline.text = 'sub'
files = input\complete 'sub', readline
assert.same { 'subdir/' }, files