class PublicSuffix::Domain
Domain
represents a domain name, composed by a TLD, SLD and TRD.
Attributes
Public Class Methods
Splits a string into the labels, that is the dot-separated parts.
The input is not validated, but it is assumed to be a valid domain name.
@example
name_to_labels('example.com') # => ['example', 'com'] name_to_labels('example.co.uk') # => ['example', 'co', 'uk']
@param name [String, to_s
] The domain name to split. @return [Array<String>]
# File lib/public_suffix/domain.rb, line 28 def self.name_to_labels(name) name.to_s.split(DOT) end
Creates and returns a new {PublicSuffix::Domain} instance.
@overload initialize(tld)
Initializes with a +tld+. @param [String] tld The TLD (extension)
@overload initialize(tld, sld)
Initializes with a +tld+ and +sld+. @param [String] tld The TLD (extension) @param [String] sld The TRD (domain)
@overload initialize(tld, sld, trd)
Initializes with a +tld+, +sld+ and +trd+. @param [String] tld The TLD (extension) @param [String] sld The SLD (domain) @param [String] trd The TRD (subdomain)
@yield [self] Yields on self. @yieldparam [PublicSuffix::Domain] self The newly creates instance
@example Initialize with a TLD
PublicSuffix::Domain.new("com") # => #<PublicSuffix::Domain @tld="com">
@example Initialize with a TLD and SLD
PublicSuffix::Domain.new("com", "example") # => #<PublicSuffix::Domain @tld="com", @trd=nil>
@example Initialize with a TLD, SLD and TRD
PublicSuffix::Domain.new("com", "example", "wwww") # => #<PublicSuffix::Domain @tld="com", @trd=nil, @sld="example">
# File lib/public_suffix/domain.rb, line 65 def initialize(*args) @tld, @sld, @trd = args yield(self) if block_given? end
Public Instance Methods
Returns a domain-like representation of this object if the object is a {#domain?}, nil
otherwise.
PublicSuffix::Domain.new("com").domain # => nil PublicSuffix::Domain.new("com", "google").domain # => "google.com" PublicSuffix::Domain.new("com", "google", "www").domain # => "www.google.com"
This method doesn’t validate the input. It handles the domain as a valid domain name and simply applies the necessary transformations.
This method returns a FQD, not just the domain part. To get the domain part, use sld
(aka second level domain).
PublicSuffix::Domain.new("com", "google", "www").domain # => "google.com" PublicSuffix::Domain.new("com", "google", "www").sld # => "google"
@return [String]
# File lib/public_suffix/domain.rb, line 137 def domain [@sld, @tld].join(DOT) if domain? end
Checks whether self
looks like a domain.
This method doesn’t actually validate the domain. It only checks whether the instance contains a value for the {#tld} and {#sld} attributes.
@example
PublicSuffix::Domain.new("com").domain? # => false PublicSuffix::Domain.new("com", "google").domain? # => true PublicSuffix::Domain.new("com", "google", "www").domain? # => true # This is an invalid domain, but returns true # because this method doesn't validate the content. PublicSuffix::Domain.new("com", nil).domain? # => true
@see subdomain?
@return [Boolean]
# File lib/public_suffix/domain.rb, line 198 def domain? !(@tld.nil? || @sld.nil?) end
Returns the full domain name.
@return [String]
@example Gets the domain name of a domain
PublicSuffix::Domain.new("com", "google").name # => "google.com"
@example Gets the domain name of a subdomain
PublicSuffix::Domain.new("com", "google", "www").name # => "www.google.com"
# File lib/public_suffix/domain.rb, line 105 def name [@trd, @sld, @tld].compact.join(DOT) end
Returns a subdomain-like representation of this object if the object is a {#subdomain?}, nil
otherwise.
PublicSuffix::Domain.new("com").subdomain # => nil PublicSuffix::Domain.new("com", "google").subdomain # => nil PublicSuffix::Domain.new("com", "google", "www").subdomain # => "www.google.com"
This method doesn’t validate the input. It handles the domain as a valid domain name and simply applies the necessary transformations.
This method returns a FQD, not just the subdomain part. To get the subdomain part, use trd
(aka third level domain).
PublicSuffix::Domain.new("com", "google", "www").subdomain # => "www.google.com" PublicSuffix::Domain.new("com", "google", "www").trd # => "www"
@see subdomain?
@see domain
@return [String]
# File lib/public_suffix/domain.rb, line 169 def subdomain [@trd, @sld, @tld].join(DOT) if subdomain? end
Checks whether self
looks like a subdomain.
This method doesn’t actually validate the subdomain. It only checks whether the instance contains a value for the {#tld}, {#sld} and {#trd} attributes. If you also want to validate the domain, use {#valid_subdomain?} instead.
@example
PublicSuffix::Domain.new("com").subdomain? # => false PublicSuffix::Domain.new("com", "google").subdomain? # => false PublicSuffix::Domain.new("com", "google", "www").subdomain? # => true # This is an invalid domain, but returns true # because this method doesn't validate the content. PublicSuffix::Domain.new("com", "example", nil).subdomain? # => true
@see domain?
@return [Boolean]
# File lib/public_suffix/domain.rb, line 229 def subdomain? !(@tld.nil? || @sld.nil? || @trd.nil?) end
Returns an array containing the domain parts.
@return [Array<String, nil>]
@example
PublicSuffix::Domain.new("google.com").to_a # => [nil, "google", "com"] PublicSuffix::Domain.new("www.google.com").to_a # => [nil, "google", "com"]
# File lib/public_suffix/domain.rb, line 89 def to_a [@trd, @sld, @tld] end
Returns a string representation of this object.
@return [String]
# File lib/public_suffix/domain.rb, line 73 def to_s name end