Class: JSONAPIonify::Api::ContextDelegate
- Inherits:
-
Object
- Object
- JSONAPIonify::Api::ContextDelegate
- Defined in:
- lib/jsonapionify/api/context_delegate.rb
Defined Under Namespace
Classes: Mock
Instance Attribute Summary collapse
-
#request ⇒ Object
readonly
Returns the value of attribute request.
Instance Method Summary collapse
- #clear ⇒ Object
-
#initialize(request, resource_instance, definitions, **overrides) ⇒ ContextDelegate
constructor
A new instance of ContextDelegate.
- #inspect ⇒ Object
- #reset(key) ⇒ Object
Constructor Details
#initialize(request, resource_instance, definitions, **overrides) ⇒ ContextDelegate
Returns a new instance of ContextDelegate.
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/jsonapionify/api/context_delegate.rb', line 17 def initialize(request, resource_instance, definitions, **overrides) @memo = {} @request = request @persisted_memo = {} @definitions = definitions @overrides = overrides @resource_instance = resource_instance delegate = self %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 definitions.each do |name, context| raise Errors::ReservedContextName if respond_to? name define_singleton_method name do return @overrides[name] if @overrides.has_key? name return @persisted_memo[name] if @persisted_memo.has_key? name return @memo[name] if @memo.has_key? name write_memo = (context.persisted? ? @persisted_memo : @memo) write_memo[name] = context.call(@resource_instance, delegate) end define_singleton_method "#{name}=" do |value| @persisted_memo[name] = value end unless context.readonly? end freeze end |
Instance Attribute Details
#request ⇒ Object (readonly)
Returns the value of attribute request.
15 16 17 |
# File 'lib/jsonapionify/api/context_delegate.rb', line 15 def request @request end |
Instance Method Details
#clear ⇒ Object
55 56 57 |
# File 'lib/jsonapionify/api/context_delegate.rb', line 55 def clear @memo.clear end |
#inspect ⇒ Object
59 60 61 |
# File 'lib/jsonapionify/api/context_delegate.rb', line 59 def inspect to_s.chomp('>') << " memoed: #{@memo.keys.inspect}, persisted: #{@persisted_memo.keys.inspect}, overridden: #{@overrides.keys}" << '>' end |
#reset(key) ⇒ Object
51 52 53 |
# File 'lib/jsonapionify/api/context_delegate.rb', line 51 def reset key @memo.delete(key) end |