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
|