class BetterErrors::CodeFormatter
@private
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 9 def initialize(filename, line, context = 5) @filename = filename @line = line @context = context end
Public Instance Methods
context_lines()
click to toggle source
# File lib/better_errors/code_formatter.rb, line 27 def context_lines range = line_range source_lines[(range.begin - 1)..(range.end - 1)] or raise Errno::EINVAL end
line_range()
click to toggle source
# File lib/better_errors/code_formatter.rb, line 21 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 15 def output formatted_code rescue Errno::ENOENT, Errno::EINVAL source_unavailable end
Private Instance Methods
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 34 def formatted_code formatted_lines.join end
source()
click to toggle source
# File lib/better_errors/code_formatter.rb, line 44 def source @source ||= File.read(filename) end
source_lines()
click to toggle source
# File lib/better_errors/code_formatter.rb, line 48 def source_lines @source_lines ||= source.lines end