def merge!( other )
return self if other.equal? self
Kernel.raise Error, "can only merge another Configuration" unless other.kind_of?(Configuration)
other_values = other.__values
other_defaults = other.__defaults
other.__desc.each do |key,desc|
value = @__values[key]
other_value = other_values[key]
if value.kind_of?(Configuration) and other_value.kind_of?(Configuration)
value.merge! other_value
elsif !other_value.kind_of?(Loquacious::Undefined)
@__values[key] = other_value
end
if other_defaults.has_key? key
@__defaults[key] = other_defaults[key]
end
if desc
__desc[key] = desc
end
end
self
end