Sha256: a079977b4de3635d90a924cc6044b0aa529381c09836ca262c607f35ed392cc7
Contents?: true
Size: 904 Bytes
Versions: 1
Compression:
Stored size: 904 Bytes
Contents
module Crystal class Router scope :application attr_reader :routes def initialize @routes = [] add 0 do |request| class_path, method = request.path.split '.' if class_path.strip != '/' class_name = class_path.camelize begin klass = class_name.constantize [klass, method] rescue NameError end end end end def add priority = 1, &block routes[priority] ||= [] block.must_not_be.nil routes[priority] << block end def select_class request routes.reverse_each do |current_level_routes| next unless current_level_routes current_level_routes.each do |route| result = route.call request return result if result end end raise "No route for '#{request.path}' request!" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
crystal-0.0.10 | lib/crystal/core/router.rb |