Sha256: f4b02c5d5a15aeb084c47afefe280b3ccd5147a84303d6c690e6a5b9915ba834
Contents?: true
Size: 940 Bytes
Versions: 1
Compression:
Stored size: 940 Bytes
Contents
module JSONAPIonify::Api class ContextDelegate class Mock def method_missing(*args, &block) self end end def initialize(request, instance, definitions) memo = {} delegate = self @definitions = definitions define_singleton_method :request do request end %i{initialize_dup initialize_clone}.each do |method| define_singleton_method method do |copy| memo.each do |k, v| copy.public_send "#{k}=", v end end end define_singleton_method(:reset) do |key| memo.delete(key) end definitions.each do |name, context| define_singleton_method name do memo[name] ||= context.call(instance, delegate) end define_singleton_method "#{name}=" do |value| memo[name] = value end unless context.readonly? end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jsonapionify-0.9.0 | lib/jsonapionify/api/context_delegate.rb |