Sha256: 29a405c61a9f770e290bb9c80c1808d192c6f65c21cc4cd5cfbbcc9c0823b3ea

Contents?: true

Size: 757 Bytes

Versions: 12

Compression:

Stored size: 757 Bytes

Contents

# frozen_string_literal: true

class CoordinateValidator < BaseValidator

  BOUNDARIES = {
    latitude: 90.0,
    longitude: 180.0
  }.freeze

  def validate_each(record, attribute, value)
    assert_valid_boundary!
    super
  end

  private

  def assert_valid_boundary!
    assert_valid_option!(:boundary, BOUNDARIES.keys.push(:pair))
  end

  def boundary
    options[:boundary] || :pair
  end

  def valid_attr?
    case boundary
    when :latitude then valid_boundary?(:latitude)
    when :longitude then valid_boundary?(:longitude)
    else valid_boundary?(:latitude, value.first) && valid_boundary?(:longitude, value.last)
    end
  end

  def valid_boundary?(key, coordinate = nil)
    (coordinate || value).to_f.abs <= BOUNDARIES[key]
  end

end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
lite-validators-1.8.0 lib/lite/validators/coordinate_validator.rb
lite-validators-1.7.2 lib/lite/validators/coordinate_validator.rb
lite-validators-1.7.1 lib/lite/validators/coordinate_validator.rb
lite-validators-1.7.0 lib/lite/validators/coordinate_validator.rb
lite-validators-1.6.0 lib/lite/validators/coordinate_validator.rb
lite-validators-1.5.0 lib/lite/validators/coordinate_validator.rb
lite-validators-1.4.0 lib/lite/validators/coordinate_validator.rb
lite-validators-1.3.2 lib/lite/validators/coordinate_validator.rb
lite-validators-1.3.1 lib/lite/validators/coordinate_validator.rb
lite-validators-1.3.0 lib/lite/validators/coordinate_validator.rb
lite-validators-1.2.0 lib/lite/validators/coordinate_validator.rb
lite-validators-1.1.2 lib/lite/validators/coordinate_validator.rb