Module: PageletRails::Concerns::Options::ClassMethods

Includes:
Shared
Defined in:
lib/pagelet_rails/concerns/options.rb

Instance Method Summary collapse

Methods included from Shared

#set_pagelet_options

Instance Method Details

#inherited(subklass) ⇒ Object



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/pagelet_rails/concerns/options.rb', line 60

def inherited subklass
  existing = subklass.ancestors.reverse.
    reduce({}.with_indifferent_access) do |memo, ancestor|

    if ancestor.instance_variable_defined?(:@pagelet_options)
      memo.deep_merge! ancestor.instance_variable_get :@pagelet_options
    end
    memo
  end

  subklass.instance_variable_set(:@pagelet_options, existing)

  super
end

#pagelet_options(*args) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/pagelet_rails/concerns/options.rb', line 49

def pagelet_options *args
  set_pagelet_options(*args)

  if superclass && superclass.instance_variable_defined?(:@pagelet_options)
    parent = superclass.instance_variable_get :@pagelet_options
    parent.merge(@pagelet_options)
  else
    @pagelet_options
  end
end