class PerfectQueue::Application::Router

Attributes

patterns[R]

Public Class Methods

new() click to toggle source
# File lib/perfectqueue/application/router.rb, line 49
def initialize
  @patterns = []
  @cache = {}
end

Public Instance Methods

add(pattern, sym, options={}) click to toggle source
# File lib/perfectqueue/application/router.rb, line 54
def add(pattern, sym, options={})
  case pattern
  when Regexp
    # ok
  when String, Symbol
    pattern = /\A#{Regexp.escape(pattern)}\z/
  else
    raise ArgumentError, "pattern should be String or Regexp but got #{pattern.class}: #{pattern.inspect}"
  end

  @patterns << [pattern, sym]
end
route(type) click to toggle source
# File lib/perfectqueue/application/router.rb, line 67
def route(type)
  if @cache.has_key?(type)
    return @cache[type]
  end

  @patterns.each {|(pattern,sym)|
    if pattern.match(type)
      base = resolve_application_base(sym)
      return @cache[type] = base
    end
  }
  return @cache[type] = nil
end

Private Instance Methods

resolve_application_base(sym) click to toggle source
# File lib/perfectqueue/application/router.rb, line 83
def resolve_application_base(sym)
  case sym
  when Symbol
    self.class.const_get(sym)
  else
    sym
  end
end