Sha256: 71df824a70c47c8b2e193b55265f8337ec8898a732ee7f30e3a7705165d79ede
Contents?: true
Size: 1.4 KB
Versions: 3
Compression:
Stored size: 1.4 KB
Contents
require 'treetop' module Hercules module UptimeMonitor class Parser 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.blank? 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 end class MaestroLangParser Treetop.load(File.expand_path(File.join(File.dirname(__FILE__), 'maestro'))) @@maestro_parser = MaestroParser.new def parse(data, description = false) Hercules::UptimeMonitor::Parser.parse(data, @@maestro_parser, description) end end class BrowsersLangParser Treetop.load(File.expand_path(File.join(File.dirname(__FILE__), 'browsers'))) @@browsers_parser = BrowsersParser.new def parse(data) Hercules::UptimeMonitor::Parser.parse(data, @@browsers_parser) end end class ParserSyntaxError < StandardError; end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
uptime_monitor-0.3.3 | lib/uptime_monitor/parser.rb |
uptime_monitor-0.3.2 | lib/uptime_monitor/parser.rb |
uptime_monitor-0.3.1 | lib/uptime_monitor/parser.rb |