Sha256: 5991d314d0103c0f7bbfb299c5faba31188edbafa9cf7c2462413413a66b3d2a
Contents?: true
Size: 1.1 KB
Versions: 1
Compression:
Stored size: 1.1 KB
Contents
class Usher class Route class Path attr_reader :route, :parts def initialize(route, parts) @route = route @parts = parts @dynamic = @parts.any?{|p| p.is_a?(Variable)} end def dynamic_indicies unless @dynamic_indicies @dynamic_indicies = [] parts.each_index{|i| @dynamic_indicies << i if parts[i].is_a?(Variable)} end @dynamic_indicies end def dynamic_parts @dynamic_parts ||= parts.values_at(*dynamic_indicies) end def dynamic_map unless @dynamic_map @dynamic_map = {} dynamic_parts.each{|p| @dynamic_map[p.name] = p } end @dynamic_map end def dynamic_keys @dynamic_keys ||= dynamic_map.keys end def dynamic_required_keys @dynamic_required_keys ||= dynamic_parts.select{|dp| !dp.default_value}.map{|dp| dp.name} end def dynamic? @dynamic end def can_generate_from?(keys) (dynamic_required_keys - keys).size.zero? end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
joshbuddy-usher-0.5.1 | lib/usher/route/path.rb |