Sha256: 2a0d64854e89d9ef220abe463d2806491bcce3ff57aaacd88b3c18957bd9e117

Contents?: true

Size: 662 Bytes

Versions: 6

Compression:

Stored size: 662 Bytes

Contents

module Kontrol

  class Route
    attr_accessor :name, :pattern, :options, :block
    
    def initialize(name, pattern, options, block)
      @name = name
      @pattern = pattern
      @block = block
      @options = options || {}
      @format = pattern.gsub(/\(.*?\)/, '%s')
      @regexp = /^#{pattern}/
    end

    def recognize(request)
      match = request.path_info.match(@regexp)
      valid = @options.all? { |key, val| request.send(key).match(val) }

      return match if match and valid
    end

    def generate(*args)
      @format % args.map { |arg|
        arg.respond_to?(:to_param) ? arg.to_param : arg.to_s
      }
    end
    
  end

end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
georgi-kontrol-0.3 lib/kontrol/route.rb
kontrol-0.4 lib/kontrol/route.rb
kontrol-0.3.3 lib/kontrol/route.rb
kontrol-0.3.2 lib/kontrol/route.rb
kontrol-0.3.1 lib/kontrol/route.rb
kontrol-0.3 lib/kontrol/route.rb