class CC::Analyzer::IssueValidations::LocationFormatValidation::Validator

Attributes

error[RW]
location[R]

Public Class Methods

new(location) click to toggle source
# File lib/cc/analyzer/issue_validations/location_format_validation.rb, line 6
def initialize(location)
  @location = location
  check_validity
end

Public Instance Methods

message() click to toggle source
# File lib/cc/analyzer/issue_validations/location_format_validation.rb, line 15
def message
  if error
    "Location is not formatted correctly: #{error}"
  end
end
valid?() click to toggle source
# File lib/cc/analyzer/issue_validations/location_format_validation.rb, line 11
def valid?
  error.nil?
end

Private Instance Methods

check_validity() click to toggle source
# File lib/cc/analyzer/issue_validations/location_format_validation.rb, line 27
def check_validity
  if location["lines"]
    self.error = "location.lines is not valid: #{JSON.dump(location["lines"])}" unless valid_lines?(location["lines"])
  elsif location["positions"]
    self.error = "location.positions is not valid: #{JSON.dump(location["positions"])}" unless valid_positions?(location["positions"])
  else
    self.error = "location.lines or location.positions must be present"
  end
end
valid_lines?(lines) click to toggle source
# File lib/cc/analyzer/issue_validations/location_format_validation.rb, line 51
def valid_lines?(lines)
  lines.is_a?(Hash) && [lines["begin"], lines["end"]].all? { |value| value.is_a?(Integer) }
end
valid_position?(position) click to toggle source
# File lib/cc/analyzer/issue_validations/location_format_validation.rb, line 43
def valid_position?(position)
  position &&
    (
      [position["line"], position["column"]].all? { |value| value.is_a?(Integer) } ||
      position["offset"].is_a?(Integer)
    )
end
valid_positions?(positions) click to toggle source
# File lib/cc/analyzer/issue_validations/location_format_validation.rb, line 37
def valid_positions?(positions)
  positions.is_a?(Hash) &&
    valid_position?(positions["begin"]) &&
    valid_position?(positions["end"])
end