class Aerogel::Routes::Namespace

Public Class Methods

new( base, path, &block ) click to toggle source
# File lib/aerogel/core/routes/namespace.rb, line 5
def initialize( base, path, &block )
  @base = base
  @prefix_path = path
  instance_eval &block
end
prefix( *methods ) click to toggle source
# File lib/aerogel/core/routes/namespace.rb, line 28
def self.prefix( *methods )
  methods.each do |method|
    define_method(method) {|*args, &block| prefixed( method, *args, &block ) }
  end
end

Public Instance Methods

method_missing( method, *args, &block ) click to toggle source
# File lib/aerogel/core/routes/namespace.rb, line 11
def method_missing( method, *args, &block )
  @base.send method, *args, &block
end
prefixed( method, *args, &block ) click to toggle source
# File lib/aerogel/core/routes/namespace.rb, line 15
def prefixed( method, *args, &block )
  options = Hash === args.last ? args.pop : {}
  routes = [*(args.pop || '*')]
  routes, args = routes+args, [] unless method == :route
  routes.map!{|r| @prefix_path+r }
  routes = [routes] if method == :route
  p_args = []
  p_args += args unless args.empty?
  p_args += routes # unless routes.empty?
  p_args += options unless options.empty?
  @base.send method, *p_args, &block
end