# File src/KeyValueCoding.rb, line 22 def valueForKeyPath(keyPath) keys = keyPath.split('.') result = self keys.each_index do |i| if keys[i] =~ /^[&](.*)/ return result.__send__($1) {|val| val.valueForKeyPath(keys[i+1..-1].join('.')) } end result = result.valueForKey keys[i] end result end