Class: CloudwatchQuery::Parsers::Registry
- Inherits:
-
Object
- Object
- CloudwatchQuery::Parsers::Registry
- Defined in:
- lib/cloudwatch_query/parsers/registry.rb
Instance Method Summary collapse
-
#clear ⇒ Object
Clear all parsers.
-
#initialize ⇒ Registry
constructor
A new instance of Registry.
-
#insert(index, parser) ⇒ Object
Insert parser at specific index.
-
#list ⇒ Object
List all registered parsers.
-
#parse(message) ⇒ Object
Parse a message using the first matching parser Returns [parsed_object, parser_name] or [nil, nil] if no match.
-
#prepend(*parsers) ⇒ Object
Add parser(s) at the beginning (highest priority).
-
#register(*parsers) ⇒ Object
Register one or more parsers (appends to end, lower priority).
-
#unregister(parser) ⇒ Object
Remove a parser.
Constructor Details
#initialize ⇒ Registry
Returns a new instance of Registry.
6 7 8 |
# File 'lib/cloudwatch_query/parsers/registry.rb', line 6 def initialize @parsers = [] end |
Instance Method Details
#clear ⇒ Object
Clear all parsers
44 45 46 47 |
# File 'lib/cloudwatch_query/parsers/registry.rb', line 44 def clear @parsers.clear self end |
#insert(index, parser) ⇒ Object
Insert parser at specific index
30 31 32 33 34 35 |
# File 'lib/cloudwatch_query/parsers/registry.rb', line 30 def insert(index, parser) validate_parser!(parser) @parsers.delete(parser) @parsers.insert(index, parser) self end |
#list ⇒ Object
List all registered parsers
50 51 52 |
# File 'lib/cloudwatch_query/parsers/registry.rb', line 50 def list @parsers.dup end |
#parse(message) ⇒ Object
Parse a message using the first matching parser Returns [parsed_object, parser_name] or [nil, nil] if no match
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/cloudwatch_query/parsers/registry.rb', line 56 def parse() return [nil, nil] if .nil? || .empty? @parsers.each do |parser| if parser.matches?() begin parsed = parser.parse() return [parsed, get_parser_name(parser)] if parsed rescue StandardError # Parser failed, try next one next end end end [nil, nil] end |
#prepend(*parsers) ⇒ Object
Add parser(s) at the beginning (highest priority)
20 21 22 23 24 25 26 27 |
# File 'lib/cloudwatch_query/parsers/registry.rb', line 20 def prepend(*parsers) parsers.flatten.reverse.each do |parser| validate_parser!(parser) @parsers.delete(parser) @parsers.unshift(parser) end self end |
#register(*parsers) ⇒ Object
Register one or more parsers (appends to end, lower priority)
11 12 13 14 15 16 17 |
# File 'lib/cloudwatch_query/parsers/registry.rb', line 11 def register(*parsers) parsers.flatten.each do |parser| validate_parser!(parser) @parsers << parser unless @parsers.include?(parser) end self end |
#unregister(parser) ⇒ Object
Remove a parser
38 39 40 41 |
# File 'lib/cloudwatch_query/parsers/registry.rb', line 38 def unregister(parser) @parsers.delete(parser) self end |