Class: CloudwatchQuery::Parsers::Rails::ParametersSubParser

Inherits:
Object
  • Object
show all
Includes:
SubParser
Defined in:
lib/cloudwatch_query/parsers/rails/sub_parsers.rb

Overview

Parses: "Parameters: ..."

Constant Summary collapse

PARAMS_REGEX =
/Parameters:\s+(?<params>\{.+\})$/

Class Method Summary collapse

Methods included from SubParser

included

Class Method Details

.matches?(message) ⇒ Boolean

Returns:

  • (Boolean)


56
57
58
# File 'lib/cloudwatch_query/parsers/rails/sub_parsers.rb', line 56

def self.matches?(message)
  message.include?("Parameters: {")
end

.parse(message, _base_data) ⇒ Object



60
61
62
63
64
65
66
67
68
# File 'lib/cloudwatch_query/parsers/rails/sub_parsers.rb', line 60

def self.parse(message, _base_data)
  match = message.match(PARAMS_REGEX)
  return {} unless match

  {
    line_type: :parameters,
    params: safe_parse_params(match[:params])
  }
end

.safe_parse_params(params_string) ⇒ Object



70
71
72
73
74
75
76
77
78
79
# File 'lib/cloudwatch_query/parsers/rails/sub_parsers.rb', line 70

def self.safe_parse_params(params_string)
  JSON.parse(
    params_string
      .gsub(/=>/, ":")
      .gsub(/:(\w+)/, '"\1"')
      .gsub(/nil/, "null")
  )
rescue JSON::ParserError, StandardError
  { raw: params_string }
end