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