+(other)
click to toggle source
def +(other)
self.class.new(*(@rdns + other.rdns))
end
-(other)
click to toggle source
def -(other)
rdns = @rdns.dup
normalized_rdns = normalize(@rdns)
normalize(other.rdns).reverse_each do |rdn|
if rdn == normalized_rdns.pop
rdns.pop
else
raise ArgumentError, _("%s isn't sub DN of %s") % [other, self]
end
end
self.class.new(*rdns)
end
<<(rdn)
click to toggle source
def <<(rdn)
@rdns << rdn
self
end
<=>(other)
click to toggle source
def <=>(other)
other = DN.parse(other) if other.is_a?(String)
return nil unless other.is_a?(self.class)
normalize_for_comparing(@rdns) <=>
normalize_for_comparing(other.rdns)
end
==(other)
click to toggle source
def ==(other)
case other
when self.class
normalize(@rdns) == normalize(other.rdns)
when String
parsed_other = nil
begin
parsed_other = self.class.parse(other)
rescue DistinguishedNameInvalid
return false
end
self == parsed_other
else
false
end
end
blank?()
click to toggle source
def blank?
@rdns.blank?
end
eql?(other)
click to toggle source
def eql?(other)
other.is_a?(self.class) and
normalize(@rdns).to_s.eql?(normalize(other.rdns).to_s)
end
hash()
click to toggle source
def hash
normalize(@rdns).to_s.hash
end
parent()
click to toggle source
def parent
return nil if @rdns.size <= 1
self.class.new(*@rdns[1..-1])
end
to_s()
click to toggle source
def to_s
klass = self.class
@rdns.collect do |rdn|
rdn.sort_by do |type, value|
type.upcase
end.collect do |type, value|
"#{type}=#{klass.escape_value(value)}"
end.join("+")
end.join(",")
end
to_str()
click to toggle source
unshift(rdn)
click to toggle source
def unshift(rdn)
@rdns.unshift(rdn)
end