Sha256: abe3962fe25d7f5ee0571c87533d0ff1ef0204c48ff9e0f95c0826494781470f

Contents?: true

Size: 764 Bytes

Versions: 35

Compression:

Stored size: 764 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
					
					alias_method :undefaulted_get, :get unless method_defined?(:undefaulted_get)
					def get(k)
						if !is_set?(k) && (d = self.class.default_vals[k.to_sym]) && !d.nil?
							return d
						end
						undefaulted_get(k)
					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

35 entries across 35 versions & 1 rubygems

Version Path
redis_object-1.5.1 lib/redis_object/defaults.rb
redis_object-1.5.0 lib/redis_object/defaults.rb
redis_object-1.4.9 lib/redis_object/defaults.rb
redis_object-1.4.8 lib/redis_object/defaults.rb
redis_object-1.4.7 lib/redis_object/defaults.rb
redis_object-1.4.6 lib/redis_object/defaults.rb
redis_object-1.4.5 lib/redis_object/defaults.rb
redis_object-1.4.3 lib/redis_object/defaults.rb
redis_object-1.4.2 lib/redis_object/defaults.rb
redis_object-1.4.1 lib/redis_object/defaults.rb
redis_object-1.4.0 lib/redis_object/defaults.rb
redis_object-1.3.9 lib/redis_object/defaults.rb
redis_object-1.3.8 lib/redis_object/defaults.rb
redis_object-1.3.7 lib/redis_object/defaults.rb
redis_object-1.3.6 lib/redis_object/defaults.rb
redis_object-1.3.5 lib/redis_object/defaults.rb
redis_object-1.3.4 lib/redis_object/defaults.rb
redis_object-1.3.3 lib/redis_object/defaults.rb
redis_object-1.3.2 lib/redis_object/defaults.rb
redis_object-1.3.1b lib/redis_object/defaults.rb