def read(aSource,&aBlock)
			default_values.each do |k,v|
				done = false
				if block_given? && ((newv = yield(k,v,aSource && aSource[k])) != nil)
					self[k] = newv
					done = true
				end
				copy_item(aSource,k) if !done && aSource && !aSource[k].nil?
			end
			self
		end
def read(aSource,&aBlock)
			default_values.each do |k,v|
				done = false
				if block_given? && ((newv = yield(k,v,aSource && aSource[k])) != nil)
					self[k] = newv
					done = true
				end
				copy_item(aSource,k) if !done && aSource && !aSource[k].nil?
			end
			self
		end
def read ( aSource , & aBlock ) default_values . each do | k , v | done = false if block_given? && ( ( newv = yield ( k , v , aSource && aSource [ k ] ) ) != nil ) self [ k ] = newv done = true end copy_item ( aSource , k ) if ! done && aSource && ! aSource [ k ] . nil? end self end
aBlock allows values to be filtered based on key,default and new values
aBlock allows values to be filtered based on key default and new values