class BetterErrors::CodeFormatter
@private
Constants
- FILE_TYPES
Attributes
context[R]
filename[R]
line[R]
Public Class Methods
new(filename, line, context = 5)
click to toggle source
# File lib/better_errors/code_formatter.rb, line 17 def initialize(filename, line, context = 5) @filename = filename @line = line @context = context end
Public Instance Methods
coderay_scanner()
click to toggle source
# File lib/better_errors/code_formatter.rb, line 33 def coderay_scanner ext = File.extname(filename) FILE_TYPES[ext] || :text end
context_lines()
click to toggle source
# File lib/better_errors/code_formatter.rb, line 48 def context_lines range = line_range source_lines[(range.begin - 1)..(range.end - 1)] or raise Errno::EINVAL end
each_line_of(lines) { |current_line == line| ... }
click to toggle source
# File lib/better_errors/code_formatter.rb, line 38 def each_line_of(lines, &blk) line_range.zip(lines).map { |current_line, str| yield (current_line == line), current_line, str } end
formatted_code()
click to toggle source
# File lib/better_errors/code_formatter.rb, line 29 def formatted_code formatted_lines.join end
highlighted_lines()
click to toggle source
# File lib/better_errors/code_formatter.rb, line 44 def highlighted_lines CodeRay.scan(context_lines.join, coderay_scanner).div(wrap: nil).lines end
line_range()
click to toggle source
# File lib/better_errors/code_formatter.rb, line 57 def line_range min = [line - context, 1].max max = [line + context, source_lines.count].min min..max end
output()
click to toggle source
# File lib/better_errors/code_formatter.rb, line 23 def output formatted_code rescue Errno::ENOENT, Errno::EINVAL source_unavailable end
source_lines()
click to toggle source
# File lib/better_errors/code_formatter.rb, line 53 def source_lines @source_lines ||= File.readlines(filename) end