Sha256: d9cc9c96555c0bf884b218288702448083dc60ace01657dec059cae4677216ca
Contents?: true
Size: 1.29 KB
Versions: 1
Compression:
Stored size: 1.29 KB
Contents
# Copyright (c) 2008 Michael Fellinger m.fellinger@gmail.com # All files in this distribution are subject to the terms of the Ruby license. # Usage: # # Ramaze.contrib :route # Ramaze::Contrib::Route[ %r!^/(\d+\.\d{2})$! ] = "/price/%.2f" module Ramaze module Contrib class Route class << self def startup trait :route => true trait :routes => Dictionary.new Ramaze::Controller::FILTER.put_before(:default, :routed) end def [](key) trait[:routes][key] end def []=(key, value) trait[:routes][key] = value end end end end class Controller class << self def routed(path) routes = Contrib::Route.trait[:routes] routes.each do |key, val| case when key.is_a?(Regexp) regex, pattern = key, val if md = path.match(regex) new_path = pattern % md.to_a[1..-1] return resolve(new_path, :routed) end when val.respond_to?(:call) if new_path = val.call(path, request) return resolve(new_path, :routed) end else Inform.error "Invalid route #{val}" end end nil end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
ramaze-0.3.0 | lib/ramaze/contrib/route.rb |