Sha256: eebc81e5f0b3acac698878efc1e74a66ab9bd971ca43ef89c4da945595dedee3

Contents?: true

Size: 1.01 KB

Versions: 6

Compression:

Stored size: 1.01 KB

Contents

module SCSSLint
  # Stores a location of {Lint} in a source.
  class Location
    include Comparable

    attr_reader :line, :column, :length

    # @param line [Integer] One-based index
    # @param column [Integer] One-based index
    # @param length [Integer] Number of characters, including the first character
    def initialize(line = 1, column = 1, length = 1)
      raise ArgumentError, "Line must be more than 0, passed #{line}" if line < 1
      raise ArgumentError, "Column must be more than 0, passed #{column}" if column < 1
      raise ArgumentError, "Length must be more than 0, passed #{length}" if length < 1

      @line   = line
      @column = column
      @length = length
    end

    def ==(other)
      %i[line column length].all? do |attr|
        send(attr) == other.send(attr)
      end
    end

    alias eql? ==

    def <=>(other)
      %i[line column length].each do |attr|
        result = send(attr) <=> other.send(attr)
        return result unless result == 0
      end

      0
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
scss_lint-0.60.0 lib/scss_lint/location.rb
scss_lint-0.59.0 lib/scss_lint/location.rb
scss_lint-0.58.0 lib/scss_lint/location.rb
scss_lint-0.57.1 lib/scss_lint/location.rb
scss_lint-0.57.0 lib/scss_lint/location.rb
scss_lint-0.56.0 lib/scss_lint/location.rb