def parse_domains_from_host(host)
parts = host.split(".").reverse
public_suffix = []
domain = ""
subdomains = []
sub_hash = @public_suffixes
parts.each_index do |i|
part = parts[i]
sub_parts = sub_hash[part]
sub_hash = sub_parts
if sub_parts.has_key? "*"
public_suffix << part
public_suffix << parts[i+1]
domain = parts[i+2]
subdomains = parts.slice(i+3, parts.size)
break
elsif sub_parts.empty? || !sub_parts.has_key?(parts[i+1])
public_suffix << part
domain = parts[i+1]
subdomains = parts.slice(i+2, parts.size)
break
else
public_suffix << part
end
end
{:public_suffix => public_suffix.reverse.join("."), :domain => domain, :subdomain => subdomains.reverse.join(".")}
end