Class: Hercules::UptimeMonitor::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/uptime_monitor/parser.rb

Class Method Summary collapse

Class Method Details

.parse(data, parser, description = false) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/uptime_monitor/parser.rb', line 6

def self.parse(data, parser, description = false)
  if data.respond_to? :read
    data = data.read
  end

  ast = parser.parse data

  if ast
    return (description ? ast.description : ast.content)
  else
    parser.failure_reason =~ /^(Expected .+) after/m
    raise(Hercules::UptimeMonitor::ParserSyntaxError.new(error: "syntax error"), "syntax error") if $1.nil?
    message =
    "#{$1.gsub("\n", '$NEWLINE')}:" << "\n" <<
    data.lines.to_a[parser.failure_line - 1] << "\n" <<
    "#{'~' * (parser.failure_column - 1)}^"
    raise(Hercules::UptimeMonitor::ParserSyntaxError.new(error: message), message)
  end
end