Sha256: fd68e2429f06e8d59c0dd67935ccdd2303dc0f02a93c003e64b295ac3dee6732

Contents?: true

Size: 1.18 KB

Versions: 7

Compression:

Stored size: 1.18 KB

Contents

module GoogleDistanceMatrix
  # Public: Thin wrapper class for an element in the matrix.
  #
  # The route has the data the element contains, pluss it references
  # it's origin and destination.
  #
  class Route
    STATUSES = %w[ok zero_results not_found]

    ATTRIBUTES = %w[
      origin destination
      status distance_text distance_in_meters duration_text duration_in_seconds
    ]

    attr_reader *ATTRIBUTES

    delegate *(STATUSES.map { |s| s + '?' }), to: :status, allow_nil: true


    def initialize(attributes = {})
      attributes = attributes.with_indifferent_access

      @origin = attributes[:origin]
      @destination = attributes[:destination]

      @status = ActiveSupport::StringInquirer.new attributes[:status].downcase

      if ok?
        @distance_text = attributes[:distance][:text]
        @distance_in_meters = attributes[:distance][:value]
        @duration_text = attributes[:duration][:text]
        @duration_in_seconds = attributes[:duration][:value]
      end
    end



    def inspect
      inspection = ATTRIBUTES.reject { |a| public_send(a).blank? }.map { |a| "#{a}: #{public_send(a).inspect}" }.join ', '

      "#<#{self.class} #{inspection}>"
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
google_distance_matrix-0.3.0 lib/google_distance_matrix/route.rb
google_distance_matrix-0.2.1 lib/google_distance_matrix/route.rb
google_distance_matrix-0.2.0 lib/google_distance_matrix/route.rb
google_distance_matrix-0.1.3 lib/google_distance_matrix/route.rb
google_distance_matrix-0.1.2 lib/google_distance_matrix/route.rb
google_distance_matrix-0.1.1 lib/google_distance_matrix/route.rb
google_distance_matrix-0.1.0 lib/google_distance_matrix/route.rb