Class Resolv::DNS::Name
In: lib/resolv.rb
Parent: Object

Methods

==   []   absolute?   create   eql?   hash   inspect   length   new   subdomain_of?   to_a   to_s  

Public Class methods

[Source]

     # File lib/resolv.rb, line 965
965:       def self.create(arg)
966:         case arg
967:         when Name
968:           return arg
969:         when String
970:           return Name.new(Label.split(arg), /\.\z/ =~ arg ? true : false)
971:         else
972:           raise ArgumentError.new("cannot interpret as DNS name: #{arg.inspect}")
973:         end
974:       end

[Source]

     # File lib/resolv.rb, line 976
976:       def initialize(labels, absolute=true)
977:         @labels = labels
978:         @absolute = absolute
979:       end

Public Instance methods

[Source]

     # File lib/resolv.rb, line 989
989:       def ==(other)
990:         return false unless Name === other
991:         return @labels == other.to_a && @absolute == other.absolute?
992:       end

[Source]

      # File lib/resolv.rb, line 1025
1025:       def [](i)
1026:         return @labels[i]
1027:       end

[Source]

     # File lib/resolv.rb, line 985
985:       def absolute?
986:         return @absolute
987:       end
eql?(other)

Alias for #==

[Source]

      # File lib/resolv.rb, line 1013
1013:       def hash
1014:         return @labels.hash ^ @absolute.hash
1015:       end

[Source]

     # File lib/resolv.rb, line 981
981:       def inspect
982:         "#<#{self.class}: #{self.to_s}#{@absolute ? '.' : ''}>"
983:       end

[Source]

      # File lib/resolv.rb, line 1021
1021:       def length
1022:         return @labels.length
1023:       end

tests subdomain-of relation.

  domain = Resolv::DNS::Name.create("y.z")
  p Resolv::DNS::Name.create("w.x.y.z").subdomain_of?(domain) #=> true
  p Resolv::DNS::Name.create("x.y.z").subdomain_of?(domain) #=> true
  p Resolv::DNS::Name.create("y.z").subdomain_of?(domain) #=> false
  p Resolv::DNS::Name.create("z").subdomain_of?(domain) #=> false
  p Resolv::DNS::Name.create("x.y.z.").subdomain_of?(domain) #=> false
  p Resolv::DNS::Name.create("w.z").subdomain_of?(domain) #=> false

[Source]

      # File lib/resolv.rb, line 1005
1005:       def subdomain_of?(other)
1006:         raise ArgumentError, "not a domain name: #{other.inspect}" unless Name === other
1007:         return false if @absolute != other.absolute?
1008:         other_len = other.length
1009:         return false if @labels.length <= other_len
1010:         return @labels[-other_len, other_len] == other.to_a
1011:       end

[Source]

      # File lib/resolv.rb, line 1017
1017:       def to_a
1018:         return @labels
1019:       end

returns the domain name as a string.

The domain name doesn‘t have a trailing dot even if the name object is absolute.

  p Resolv::DNS::Name.create("x.y.z.").to_s #=> "x.y.z"
  p Resolv::DNS::Name.create("x.y.z").to_s #=> "x.y.z"

[Source]

      # File lib/resolv.rb, line 1037
1037:       def to_s
1038:         return @labels.join('.')
1039:       end

[Validate]