def take_value( key, value )
keypath = key.split '.'
object = self
keypath.each_with_index do |path, index|
writer = "#{path}="
if (index + 1) == keypath.size then
if object.respond_to? writer then
object.__send__(writer, value)
elsif _directly?(object) == true then
object.instance_eval "@#{path}=value"
else
_raise_error(object, writer)
end
else
if object.respond_to? path then
object = object.__send__ path
elsif _directly?(object) == true then
object = object.instance_eval "@#{path}"
else
_raise_error(object, path)
end
end
end
end