Sha256: e973ae9355cdc9b5e258e50934d3d2740a4f85b073e2be15a000282e58f3d74d
Contents?: true
Size: 920 Bytes
Versions: 1
Compression:
Stored size: 920 Bytes
Contents
class Usher class Grapher def initialize reset! end def reset! @significant_keys = nil @orders = Hash.new{|h,k| h[k] = Hash.new{|h2, k2| h2[k2] = []}} @key_count = Hash.new(0) @cache = {} end def add_route(route) route.paths.each do |path| unless path.dynamic_set.size.zero? path.dynamic_set.each do |k| @orders[path.dynamic_set.size][k] << path @key_count[k] += 1 end end end end def significant_keys @significant_keys ||= Set.new(@key_count.keys) end def find_matching_path(params) unless params.empty? set = Set.new(params.keys) & significant_keys set.size.downto(1) do |o| set.each do |k| @orders[o][k].each { |r| return r if r.dynamic_set.subset?(set) } end end nil end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
joshbuddy-usher-0.2.1 | lib/usher/grapher.rb |