Skip to content

Commit

Permalink
Wrap everything in class << self.
Browse files Browse the repository at this point in the history
  • Loading branch information
josevalim committed Dec 3, 2010
1 parent 78afe68 commit 226ea0e
Showing 1 changed file with 37 additions and 42 deletions.
79 changes: 37 additions & 42 deletions actionpack/lib/action_dispatch/http/url.rb
Expand Up @@ -4,55 +4,54 @@ module URL
mattr_accessor :tld_length mattr_accessor :tld_length
self.tld_length = 1 self.tld_length = 1


def self.extract_domain(host, tld_length = @@tld_length) class << self
return nil unless named_host?(host) def extract_domain(host, tld_length = @@tld_length)

return nil unless named_host?(host)
host.split('.').last(1 + tld_length).join('.') host.split('.').last(1 + tld_length).join('.')
end end

def self.extract_subdomains(host, tld_length = @@tld_length)
return [] unless named_host?(host)
parts = host.split('.')
parts[0..-(tld_length+2)]
end

def self.extract_subdomain(host, tld_length = @@tld_length)
extract_subdomains(host, tld_length).join('.')
end


def self.named_host?(host) def extract_subdomains(host, tld_length = @@tld_length)
!(host.nil? || /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.match(host)) return [] unless named_host?(host)
end parts = host.split('.')
parts[0..-(tld_length+2)]
end


def self.url_for(options = {}) def extract_subdomain(host, tld_length = @@tld_length)
unless options[:host].present? || options[:only_path].present? extract_subdomains(host, tld_length).join('.')
raise ArgumentError, 'Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true'
end end


rewritten_url = "" def url_for(options = {})
unless options[:host].present? || options[:only_path].present?
raise ArgumentError, 'Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true'
end


unless options[:only_path] rewritten_url = ""
rewritten_url << (options[:protocol] || "http")
rewritten_url << "://" unless rewritten_url.match("://")
rewritten_url << rewrite_authentication(options)
rewritten_url << host_or_subdomain_and_domain(options)
rewritten_url << ":#{options.delete(:port)}" if options[:port]
end


path = options.delete(:path) || '' unless options[:only_path]
rewritten_url << (options[:protocol] || "http")
rewritten_url << "://" unless rewritten_url.match("://")
rewritten_url << rewrite_authentication(options)
rewritten_url << host_or_subdomain_and_domain(options)
rewritten_url << ":#{options.delete(:port)}" if options[:port]
end


params = options[:params] || {} path = options.delete(:path) || ''
params.reject! {|k,v| !v }


rewritten_url << (options[:trailing_slash] ? path.sub(/\?|\z/) { "/" + $& } : path) params = options[:params] || {}
rewritten_url << "?#{params.to_query}" unless params.empty? params.reject! {|k,v| !v }
rewritten_url << "##{Rack::Mount::Utils.escape_uri(options[:anchor].to_param.to_s)}" if options[:anchor]
rewritten_url rewritten_url << (options[:trailing_slash] ? path.sub(/\?|\z/) { "/" + $& } : path)
end rewritten_url << "?#{params.to_query}" unless params.empty?
rewritten_url << "##{Rack::Mount::Utils.escape_uri(options[:anchor].to_param.to_s)}" if options[:anchor]
rewritten_url
end


class << self
private private


def named_host?(host)
!(host.nil? || /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/.match(host))
end

def rewrite_authentication(options) def rewrite_authentication(options)
if options[:user] && options[:password] if options[:user] && options[:password]
"#{Rack::Utils.escape(options[:user])}:#{Rack::Utils.escape(options[:password])}@" "#{Rack::Utils.escape(options[:user])}:#{Rack::Utils.escape(options[:password])}@"
Expand All @@ -72,11 +71,8 @@ def host_or_subdomain_and_domain(options)
host << (options[:domain] || extract_domain(options[:host], tld_length)) host << (options[:domain] || extract_domain(options[:host], tld_length))
host host
end end

end end




# Returns the complete URL used for this request. # Returns the complete URL used for this request.
def url def url
protocol + host_with_port + fullpath protocol + host_with_port + fullpath
Expand Down Expand Up @@ -168,7 +164,6 @@ def subdomains(tld_length = @@tld_length)
def subdomain(tld_length = @@tld_length) def subdomain(tld_length = @@tld_length)
subdomains(tld_length) subdomains(tld_length)
end end

end end
end end
end end

0 comments on commit 226ea0e

Please sign in to comment.