lib/subdomain_routes/routes.rb in mholling-subdomain_routes-0.1.0 vs lib/subdomain_routes/routes.rb in mholling-subdomain_routes-0.2.0

- old
+ new

@@ -2,62 +2,62 @@ module Routing module RouteSet include SplitHost def self.included(base) - [ :extract_request_environment, :add_route, :clear!, :call ].each { |method| base.alias_method_chain method, :subdomains } + [ :extract_request_environment, :add_route ].each { |method| base.alias_method_chain method, :subdomains } end def extract_request_environment_with_subdomains(request) extract_request_environment_without_subdomains(request).merge(:subdomain => subdomain_for_host(request.host)) end - + def add_route_with_subdomains(*args) options = args.extract_options! if subdomains = options.delete(:subdomains) options[:conditions] ||= {} - options[:conditions][:subdomains] = subdomains options[:requirements] ||= {} + options[:conditions][:subdomains] = subdomains options[:requirements][:subdomains] = subdomains end with_options(options) { |routes| routes.add_route_without_subdomains(*args) } end - def subdomain_procs - @subdomain_procs ||= SubdomainRoutes::ProcSet.new + def reserved_subdomains + routes.map(&:reserved_subdomains).flatten.uniq end - - def recognize_subdomain(name, &block) - subdomain_procs.add_recognizer(name, &block) - end - - def clear_with_subdomains! - subdomain_procs.clear! - clear_without_subdomains! - end - - def call_with_subdomains(*args) - subdomain_procs.flush! unless SubdomainRoutes::Config.manual_flush - call_without_subdomains(*args) - end end module Route def self.included(base) - base.alias_method_chain :recognition_conditions, :subdomains + [ :recognition_conditions, :segment_keys, :recognition_extraction ].each { |method| base.alias_method_chain method, :subdomains } end def recognition_conditions_with_subdomains result = recognition_conditions_without_subdomains case conditions[:subdomains] when Array result << "conditions[:subdomains].include?(env[:subdomain])" - when Hash - if subdomain = conditions[:subdomains][:proc] - result << %Q{ActionController::Routing::Routes.subdomain_procs.recognize(#{subdomain.inspect}, env[:subdomain])} - end + when Symbol + result << "(subdomain = env[:subdomain] unless env[:subdomain].blank?)" end result + end + + def segment_keys_with_subdomains + result = segment_keys_without_subdomains + result.unshift(:subdomain) if conditions[:subdomains].is_a? Symbol + result + end + + def recognition_extraction_with_subdomains + result = recognition_extraction_without_subdomains + result.unshift "\nparams[#{conditions[:subdomains].inspect}] = subdomain\n" if conditions[:subdomains].is_a? Symbol + result + end + + def reserved_subdomains + conditions[:subdomains].is_a?(Array) ? conditions[:subdomains] : [] end end end end