class Spellr::InteractiveReplacement
Attributes
global[RW]
global?[RW]
reporter[R]
token[R]
token_highlight[R]
Public Class Methods
new(token, reporter)
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 14 def initialize(token, reporter) @token = token @token_highlight = red(token) @reporter = reporter Readline.input = reporter.output.stdin Readline.output = reporter.output.stdout end
Public Instance Methods
ask_replacement()
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 40 def ask_replacement puts '' puts " #{lighten '[^C] to go back'}" prompt_replacement end
complete_replacement(replacement)
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 27 def complete_replacement(replacement) handle_global_replacement(replacement) token.replace(replacement) reporter.increment(:total_fixed) puts "\n\e[0mReplaced #{'all ' if global?}#{token_highlight} with #{green(replacement)}" throw :check_file_from, token end
global_replace()
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 22 def global_replace self.global = true replace end
handle_ctrl_c()
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 71 def handle_ctrl_c print "\e[0m" reporter.clear_line(5) reporter.call(token) end
handle_global_replacement(replacement)
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 36 def handle_global_replacement(replacement) reporter.global_replacements[token.to_s] = replacement if global? end
prompt_replacement()
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 46 def prompt_replacement Readline.pre_input_hook = -> { pre_input_hook(token) } prompt = " Replace #{'all ' if global?}#{token_highlight} with: \e[32m" Readline.readline(prompt) rescue Interrupt handle_ctrl_c end
re_ask_replacement()
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 54 def re_ask_replacement print "\e[0m\a\e[1T" try_replace(prompt_replacement) end
replace()
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 67 def replace try_replace(ask_replacement) end
try_replace(replacement)
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 60 def try_replace(replacement) return re_ask_replacement if replacement == token return re_ask_replacement if replacement.empty? complete_replacement(replacement) end
Private Instance Methods
pre_input_hook(value)
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 79 def pre_input_hook(value) Readline.refresh_line Readline.insert_text value.to_s Readline.redisplay # Remove the hook right away. Readline.pre_input_hook = nil end
puts(str)
click to toggle source
# File lib/spellr/interactive_replacement.rb, line 88 def puts(str) reporter.puts(str) end