module Fias::Query

Attributes

params[R]

Public Class Methods

new(params) click to toggle source
# File lib/fias/query.rb, line 3
def initialize(params)
  @params = Params.new(params)
  @finder = Finder.new(@params, method(:find))
end

Public Instance Methods

perform() click to toggle source
# File lib/fias/query.rb, line 10
def perform
  assumption = @finder.assumption
  estimate(assumption)
end

Protected Instance Methods

estimate(assumption) click to toggle source
# File lib/fias/query.rb, line 21
def estimate(assumption)
  chains = estimate_chains(assumption)
  reject_invalid_chains(chains)
end
estimate_chains(assumption) click to toggle source
# File lib/fias/query.rb, line 26
def estimate_chains(assumption)
  assumption
    .map { |chain| [rate(chain), chain.first] }
    .sort_by(&:first)
    .reverse
end
find(_tokens) click to toggle source
# File lib/fias/query.rb, line 17
def find(_tokens)
  fail NotImplementedError
end
rate(chain) click to toggle source
# File lib/fias/query.rb, line 39
def rate(chain)
  Estimate.new(@params, chain).estimate
end
reject_invalid_chains(chains) click to toggle source
# File lib/fias/query.rb, line 33
def reject_invalid_chains(chains)
  return chains if chains.empty?
  highest_rate = chains.first.first
  chains.keep_if { |c| c.first == highest_rate }
end