class SearchUI::Search
def start
def start @output.print reset @matches = @match.(@answer) @selector = [ 0, [ @selector, @matches.size - 1 ].min ].max result = @query.(@answer, @matches, @selector) @output.print clear_screen @output.print move_home { ?\n + result } loop do @output.print move_home { @prompt % @answer } case getc when true @output.print clear_screen, move_home, reset if result = @found.(@answer, @matches, @selector) return result else return nil end when false return nil end @matches = @match.(@answer) @selector = [ 0, [ @selector, @matches.size - 1 ].min ].max result = @query.(@answer, @matches, @selector) @output.print clear_screen @output.print move_home { ?\n + result } end end