Sha256: e97c25edf583c904d9601d19ff6c470f3f9c911ac3d1ed411f8a68e308e31138

Contents?: true

Size: 689 Bytes

Versions: 1

Compression:

Stored size: 689 Bytes

Contents

module Seabright
	module DefaultValues
		
		module ClassMethods
			
			def default_vals
				@default_vals ||= {}
			end
			
			def intercept_for_defaults!
				return if @intercepted_for_defaults
				self.class_eval do
					
					filter_gets do |obj, k, v|
						if !obj.is_set?(k) && (d = obj.class.default_vals[k.to_sym]) && !d.nil?
							d
						else
							v
						end
					end
					
				end
				@intercepted_for_defaults = true
			end
			
			def register_default(k,vl)
				default_vals[k.to_sym] = vl
				intercept_for_defaults!
			end
			
			def default_for(k,vl)
				register_default k, vl
			end
			
		end
		
		def self.included(base)
			base.extend(ClassMethods)
		end
		
	end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
redis_object-1.5.3 lib/redis_object/defaults.rb