Module: Kazoo::App

Included in:
Sinatra
Defined in:
lib/kazoo/app.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



3
4
5
6
# File 'lib/kazoo/app.rb', line 3

def self.included(klass)
  klass.send(:extend, ClassMethods)
  klass.send(:include, Kazoo::Support)
end

Instance Method Details

#krouterObject



56
57
58
# File 'lib/kazoo/app.rb', line 56

def krouter
  self.class.krouter
end

#path(name, path, opts) ⇒ Object



52
53
54
# File 'lib/kazoo/app.rb', line 52

def path(name,path,opts)
  self.class.path(name,path,opts)
end

#url(name = '', opts = {}) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/kazoo/app.rb', line 60

def url(name = '', opts = {})
  
  if name.is_a?(Symbol)
    raise ArgumentError, "Invalid url name: #{name}" unless krouter.named_routes[name]
  
    url_path = krouter.named_routes[name].to_s.split('/').map { |part|
      next unless part.is_a?(String)
      if matches = part.match(/^:([a-z_]+)$/i)
        matched = matches[1].downcase
        opts[matched] || opts[matched.to_sym] || params[matched] || raise("You need to pass '#{matched}' to generate URL")
      else
        part
      end
    }.join('/')
    
    # Check for prefix
    full_path = kenv['path_prefix'] ? File.join(kenv['path_prefix'], url_path) : url_path
    
    format = opts[:format] || opts['format']
    full_path << ".#{format}" if format
    
    full_path
  else
    kenv['HTTP_PREFIX'] ? File.join(kenv['HTTP_PREFIX'], name) : name
  end
  
end