Sha256: 51a1c40ab7a21f51c908b6b8594331c57d68e7695c14b76afb61232c5b28d520
Contents?: true
Size: 945 Bytes
Versions: 1
Compression:
Stored size: 945 Bytes
Contents
require 'singleton' class Usher class Grapher include Singleton 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) 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.0.2 | lib/usher/grapher.rb |