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
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 |