class Gopher::Application

Attributes

root[RW]
selectors[RW]

Public Class Methods

new(&block) click to toggle source
# File lib/gopher.rb, line 15
def initialize(&block)
  reset!
  self.instance_eval(&block)
end

Public Instance Methods

add_handler(selector, handler) click to toggle source
# File lib/gopher.rb, line 63
def add_handler(selector, handler)
  selector = Gopher.sanitize_selector(selector)
  selector.sub!(/^\/*/, '')
  selectors[/^\/?#{selector}$/] = handler
end
app(selector, handler) click to toggle source
# File lib/gopher.rb, line 46
def app(selector, handler)
  add_handler selector, handler
end
Also aliased as: application
application(selector, handler)
Alias for: app
helpers(&block) click to toggle source
# File lib/gopher.rb, line 41
def helpers(&block)
  MapContext.class_eval(&block)
  TextContext.class_eval(&block)
end
lookup(selector) click to toggle source
# File lib/gopher.rb, line 56
def lookup(selector)
  selectors.find do |k, v|
    return v, *$~[1..-1] if k =~ Gopher.sanitize_selector(selector)
  end
  raise NotFound
end
map(selector, &block) click to toggle source
# File lib/gopher.rb, line 31
def map(selector, &block)
  add_handler selector.gsub(/:(.+)/, '(.+)'),
    MapHandler.new(&block).with(self)
end
mount(selector, path) click to toggle source
# File lib/gopher.rb, line 26
def mount(selector, path)
  add_handler "#{selector}/?(.*)",
    DirectoryHandler.new(path, selector).with(self)
end
reload(*f) click to toggle source
# File lib/gopher.rb, line 20
def reload(*f); Gopher.reload(*f) end
request(selector) click to toggle source
# File lib/gopher.rb, line 51
def request(selector)
  handler, *args = lookup(selector)
  handler.call(*args)
end
text(selector, &block) click to toggle source
# File lib/gopher.rb, line 36
def text(selector, &block)
  add_handler selector.gsub(/:(.+)/, '(.+)'),
    TextHandler.new(&block).with(self)
end
use(mod) click to toggle source
# File lib/gopher.rb, line 22
def use(mod)
  extend(mod)
end

Private Instance Methods

reset!() click to toggle source
# File lib/gopher.rb, line 70
def reset!
  @selectors = {}
end