class RakeCommit::PromptLine
Public Class Methods
new(attribute, prompt_exclusions = [], default_value = nil)
click to toggle source
# File lib/rake_commit/prompt_line.rb, line 8 def initialize(attribute, prompt_exclusions = [], default_value = nil) @attribute = attribute @prompt_exclusions = prompt_exclusions @default_value = default_value end
Public Instance Methods
prompt()
click to toggle source
# File lib/rake_commit/prompt_line.rb, line 14 def prompt return nil if @prompt_exclusions.include?(@attribute) puts "\n" puts "previous #{@attribute}: #{previous_input}" if previous_input set_readline_default_input(@default_value) if @default_value set_readline_history input = nil loop do input = readline("#{@attribute}: ").chomp break unless (input.empty? && !previous_input) end unless input.empty? append_history(input) return input end puts "using: #{previous_input}" return previous_input end
Private Instance Methods
append_history(input)
click to toggle source
# File lib/rake_commit/prompt_line.rb, line 40 def append_history(input) File.open(history_file, "a") { |f| f.puts(input) } end
history()
click to toggle source
# File lib/rake_commit/prompt_line.rb, line 56 def history @history ||= load_history end
history_file()
click to toggle source
# File lib/rake_commit/prompt_line.rb, line 69 def history_file @history_file ||= File.expand_path(Dir.tmpdir + "/#{@attribute}.data") end
load_history()
click to toggle source
# File lib/rake_commit/prompt_line.rb, line 65 def load_history File.exists?(history_file) ? File.read(history_file).split("\n") : [] end
previous_input()
click to toggle source
# File lib/rake_commit/prompt_line.rb, line 52 def previous_input @previous_input ||= history.last end
set_readline_default_input(default_input)
click to toggle source
# File lib/rake_commit/prompt_line.rb, line 44 def set_readline_default_input(default_input) Readline.pre_input_hook = lambda do Readline.insert_text(default_input) Readline.redisplay Readline.pre_input_hook = nil end end
set_readline_history()
click to toggle source
# File lib/rake_commit/prompt_line.rb, line 60 def set_readline_history HISTORY.pop until HISTORY.empty? HISTORY.push(*history) end