Class: Capsula::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/capsula/base.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(items) ⇒ Base

Base class for inheritence when creating new Encapsulators



8
9
10
# File 'lib/capsula/base.rb', line 8

def initialize items
  @items = items
end

Class Method Details

.merged_plans_declarationsObject

declarations from current class and from all parents, if such present



33
34
35
36
37
38
39
40
41
42
# File 'lib/capsula/base.rb', line 33

def merged_plans_declarations
  return @merged_plans_declarations if defined?(@merged_plans_declarations)
  @merged_plans_declarations = plans_declarations || {}

  sc = self
  while (sc = sc.superclass).respond_to?(:plans_declarations)
    @merged_plans_declarations.merge!(sc.plans_declarations)
  end
  @merged_plans_declarations
end

.plan_for(relation_key, **opt) ⇒ Object

DSL method



28
29
30
# File 'lib/capsula/base.rb', line 28

def plan_for relation_key, **opt
  add_to_plans_declaration relation_key: relation_key, **opt
end

Instance Method Details

#encapsulateObject



17
18
19
20
21
22
23
# File 'lib/capsula/base.rb', line 17

def encapsulate
  Encapsulator.new(
    items: @items,
    declarations: self.class.merged_plans_declarations,
    keys: @keys
  ).preload_and_encapsulate
end

#plans(*keys) ⇒ Object



12
13
14
15
# File 'lib/capsula/base.rb', line 12

def plans *keys
  @keys = keys.flatten.compact.uniq
  self
end