Sha256: 2c786c890685d46c3707dcaec3bf24e74e800c4e35b4e7e2a40e7bbe3a59fe69

Contents?: true

Size: 1.12 KB

Versions: 2

Compression:

Stored size: 1.12 KB

Contents

module Sources

  module Wrappers

    # Should this actually just be a tokenizer?
    #
    class Location < Base

      attr_reader :calculation

      def initialize source, grid, precision = 1
        super source
        @calculation = Calculations::Location.new grid, precision
      end

      # Yield the data (id, text for id) for the given category.
      #
      def harvest category
        minimum = 1.0/0

        # Cache. TODO Make option?
        #
        locations = []

        # Gather min/max.
        #
        source.harvest category do |indexed_id, location|
          location = location.to_f
          minimum = location if location < minimum
          locations << [indexed_id, location]
        end

        calculation.minimum = minimum

        # Recalculate locations.
        #
        locations.each do |indexed_id, location|
          calculation.recalculated_range(location).each do |new_location|
            yield indexed_id, new_location.to_s
          end
        end

        # TODO Move to the right place.
        #
        category.indexing_exact[:location_minimum] = minimum
      end

    end

  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
picky-2.7.0 lib/picky/sources/wrappers/location.rb
picky-2.6.0 lib/picky/sources/wrappers/location.rb