class DParse::Failure

Attributes

input[R]
origin[R]
pos[R]

Public Class Methods

new(input, pos, origin: nil) click to toggle source
# File lib/d-parse/failure.rb, line 7
def initialize(input, pos, origin: nil)
  @input = input
  @pos = pos
  @origin = origin
end

Public Instance Methods

full_message() click to toggle source
# File lib/d-parse/failure.rb, line 21
def full_message
  "#{message} at line #{@pos.line + 1}, column #{@pos.column + 1}"
end
inspect() click to toggle source
# File lib/d-parse/failure.rb, line 42
def inspect
  to_s
end
map() click to toggle source
# File lib/d-parse/failure.rb, line 13
def map
  self
end
message() click to toggle source
# File lib/d-parse/failure.rb, line 17
def message
  @_message ||= 'expected ' + (@origin ? @origin.expectation_message : '?')
end
pretty_message() click to toggle source
# File lib/d-parse/failure.rb, line 25
def pretty_message
  line = (input.lines[@pos.line] || '').rstrip
  fancy_line = line.chars.map.with_index { |c, i| i == @pos.column ? "\e[31m" + c + "\e[0m" : c }.join

  lines = [full_message, '', fancy_line, "\e[31m" + ' ' * @pos.column + '↑' + "\e[0m"]

  lines.join("\n")
end
success?() click to toggle source
# File lib/d-parse/failure.rb, line 38
def success?
  false
end
to_s() click to toggle source
# File lib/d-parse/failure.rb, line 34
def to_s
  "Failure(#{@pos}; #{message})"
end