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

- old
+ new

@@ -2,15 +2,17 @@ module Routing module RouteSet module Mapper def subdomain(*subdomains, &block) options = subdomains.extract_options! - name = nil if subdomains.empty? - if subdomain = options.delete(:proc) - subdomain_options = { :subdomains => { :proc => subdomain } } - name = subdomain + if model = options.delete(:model) + raise ArgumentError, "Invalid model name" if model.blank? + models = model.to_s.downcase.pluralize + model = models.singularize + model_id = model.foreign_key.to_sym + subdomain_options = { :subdomains => model_id, :name_prefix => "#{model}_", :namespace => "#{model}/" } else raise ArgumentError, "Please specify at least one subdomain!" end else subdomains.map!(&:to_s) @@ -20,15 +22,15 @@ raise ArgumentError, "Illegal subdomain format: #{subdomain.inspect}" unless subdomain.blank? || SubdomainRoutes.valid_subdomain?(subdomain) end if subdomains.include? "" raise ArgumentError, "Can't specify a nil subdomain unless you set Config.domain_length!" unless Config.domain_length end - name = subdomains.reject(&:blank?).first subdomain_options = { :subdomains => subdomains } + name = subdomains.reject(&:blank?).first + name = options.delete(:name) if options.has_key?(:name) + name = name.to_s.downcase.gsub(/[^(a-z0-9)]/, ' ').squeeze(' ').strip.gsub(' ', '_') unless name.blank? + subdomain_options.merge! :name_prefix => "#{name}_", :namespace => "#{name}/" unless name.blank? end - name = options.delete(:name) if options.has_key?(:name) - name = name.to_s.downcase.gsub(/[^(a-z0-9)]/, ' ').squeeze(' ').strip.gsub(' ', '_') unless name.blank? - subdomain_options.merge! :name_prefix => "#{name}_", :namespace => "#{name}/" unless name.blank? with_options(subdomain_options.merge(options), &block) end alias_method :subdomains, :subdomain end end