Sha256: f36bc751fd8788dfefac9570921277a240391385600a12c3c78ad7058b9f2076
Contents?: true
Size: 917 Bytes
Versions: 4
Compression:
Stored size: 917 Bytes
Contents
require 'set' 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) 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
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
joshbuddy-usher-0.4.0 | lib/usher/grapher.rb |
joshbuddy-usher-0.4.1 | lib/usher/grapher.rb |
joshbuddy-usher-0.4.2 | lib/usher/grapher.rb |
joshbuddy-usher-0.4.3 | lib/usher/grapher.rb |