class Grammar::ParserError
When the parser fails on a line from user input
Constants
- LINES_AFTER
- LINES_BEFORE
Public Class Methods
new(line_number, reason, source)
click to toggle source
# File lib/emerald/grammar.rb, line 26 def initialize(line_number, reason, source) @line_number = line_number @reason = reason @source = source end
Public Instance Methods
message()
click to toggle source
# File lib/emerald/grammar.rb, line 32 def message messages = [] if match = @reason.match(/(Expected .+?) at line/) messages << match[1] else messages << @reason end lines = @source.split(/\n/) LINES_BEFORE.downto(1).each do |i| messages << ' ' + lines[@line_number - i - 1] if lines[@line_number - i - 1] end messages << '>>> ' + lines[@line_number - 1] 1.upto(LINES_AFTER).each do |i| messages << ' ' + lines[@line_number + i - 1] if lines[@line_number + i - 1] end messages.join("\n") end