require 'colorize'
namespace :'i18n-extract' do
desc "Check views for hard-coded strings" task :check => :environment do root = Rails.root.join('app','views') Dir.glob("#{root}/**/*.html.erb").reject{|f| !/\A[^\.]*\.html\.erb\Z/.match?(File.basename(f))}.each do |file| extractor = I18nExtract::Extractor.new(file) extractor.extract.each do |r| puts r.location.to_s.colorize(:red) loc = r.location if loc.stop_line - loc.start_line > 0 lines = loc.source_buffer.source_lines start_line = loc.start_line stop_line = loc.stop_line print lines[start_line - 1][0..(loc.start_column - 1)].colorize(:gray) puts lines[start_line - 1][loc.start_column..-1].colorize(:red) lines[start_line...(stop_line - 1)].each do |line| puts line.colorize(:red) end print lines[stop_line - 1][0..(loc.stop_column - 1)].colorize(:red) puts lines[stop_line - 1][(loc.stop_column)..-1].colorize(:gray) else line = loc.source_line print line[0..(loc.start_column - 1)].colorize(:gray) print line[loc.start_column..(loc.stop_column - 1)].colorize(:red) print line[(loc.stop_column)..-1].colorize(:gray) puts puts "#{" " * loc.start_column}#{"^" * (loc.stop_column - loc.start_column)}" end puts end end end
end