Filter:   InfoImg
download KeyValueCoding.rb
Language: Ruby
LOC: 46
Project Info
IOWA
Server: RubyForge
Type: cvs
...Forge\i\iowa\iowa\iowa\src\
   Application.rb
   ApplicationStats.rb
   Association.rb
   BindingsParser.rb
   Client.rb
   Component.rb
   ComponentProxy.rb
   config.rb
   Context.rb
   DbPool.rb
   DynamicElements.rb
   Element.rb
   Form.rb
   HTTPServer.rb
   ISAAC.rb
   KeyValueCoding.rb
   LRUCache.rb
   PageStore.rb
   read_multipart.rb
   Request.rb
   SciTE.properties
   Session.rb
   SessionStats.rb
   SessionStore.rb
   Tag.rb
   TemplateParser.rb
   WEBrickServlet.rb

class Object
	
	def takeValueForKey(value, key)
		send("#{key}=", value)
	end
	
	def valueForKey(key)
		send(key)
	end
	
	def takeValueForKeyPath(value, keyPath)
		keys = keyPath.split('.')
		lastKey = keys.pop
		target = self
		for key in keys
			target = target.valueForKey(key)
		end
		target.takeValueForKey(value, lastKey)
	end
	
	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
end

class Hash

	def takeValueForKey(value, key)
		self[key] = value
	end
	
	def valueForKey(key)
		self[key]
	end
end

class Array

	def takeValueForKey(value, key)
		self[key.to_i] = value
	end
	
	def valueForKey(key)
		self[key.to_i]
	end
end