class Anodator::Message

Message is error message builder.

Message is generated with formated string for expand several keywords. Message#expand method is expand keywords by data_provider suppried by parameter.

Attributes

template[R]

message

Public Class Methods

new(template_message) click to toggle source
# File lib/anodator/message.rb, line 14
def initialize(template_message)
  @template = template_message.to_s

  if @template.split(//).size.zero?
    raise ArgumentError.new("template_message cannot be blank")
  end
end

Public Instance Methods

expand(data_provider) click to toggle source

expand message with data_provider

message keyword is expressed [[target_expression::attribute]]. data_provider is data source for current check target.

  • target_expression: specify target.

  • attribute: actual printed value

    • name: target name

    • number: target number

    • value: target actual data

# File lib/anodator/message.rb, line 32
def expand(data_provider)
  @template.gsub(/\[\[([^:]+)::([^\]]+)\]\]/) do
    spec_item = data_provider.spec_item_by_expression($1)
    case $2
    when "name"
      spec_item.name
    when "number"
      spec_item.number
    when "value"
      data_provider[$1]
    else
      raise UnknownMessageAttributeError.new("Unknown message attribute '#{$2}'")
    end
  end
end
validate_configuration() click to toggle source
# File lib/anodator/message.rb, line 48
def validate_configuration
  @template.gsub(/\[\[([^:]+)::([^\]]+)\]\]/) do
    Validator::Base.values.spec_item_by_expression($1)
    unless %W(name number value).include?($2)
      raise UnknownMessageAttributeError.new("Unknown message attribute '#{$2}'")
    end
  end
rescue UnknownTargetExpressionError, UnknownMessageAttributeError => e
  raise InvalidConfiguration.new(e.to_s)
end