Sha256: 374c673363f38f8ded57739764dbea2995ad20cf6b96e034a0a634f1839ff9d2

Contents?: true

Size: 959 Bytes

Versions: 3

Compression:

Stored size: 959 Bytes

Contents

module CC
  module Analyzer
    class IssueLocationFormatValidation < Validation
      def valid?
        if location["lines"]
          valid_lines?(location["lines"])
        elsif location["positions"]
          valid_positions?(location["positions"])
        else
          false
        end
      end

      def message
        "Location is not formatted correctly"
      end

      private

      def location
        @location ||= object.fetch("location", {})
      end

      def valid_positions?(positions)
        positions.is_a?(Hash) &&
          valid_position?(positions["begin"]) &&
          valid_position?(positions["end"])
      end

      def valid_position?(position)
        position &&
          (
            (position["line"] && position["column"]) ||
            position["offset"]
          )
      end

      def valid_lines?(lines)
        lines.is_a?(Hash) && lines.key?("begin") && lines.key?("end")
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
codeclimate-0.27.0 lib/cc/analyzer/issue_location_format_validation.rb
codeclimate-0.27.0.rc1 lib/cc/analyzer/issue_location_format_validation.rb
codeclimate-0.26.0 lib/cc/analyzer/issue_location_format_validation.rb