Module: PageletRails::Concerns::Options

Extended by:
ActiveSupport::Concern
Defined in:
lib/pagelet_rails/concerns/options.rb

Defined Under Namespace

Modules: ClassMethods, Shared

Instance Method Summary collapse

Instance Method Details

#pagelet_options(*args) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/pagelet_rails/concerns/options.rb', line 10

def pagelet_options *args
  set_pagelet_options(*args)

  opts = self.class.pagelet_options
  class_default_opts = opts.fetch('default', {})
  class_action_opts = opts.fetch(action_name, {})

  instance_default_opts = @pagelet_options.fetch('default', {})
  instance_action_opts = @pagelet_options.fetch(action_name, {})

  result = {}.with_indifferent_access
    .deep_merge!(class_default_opts)
    .deep_merge!(class_action_opts)
    .deep_merge!(instance_default_opts)
    .deep_merge!(instance_action_opts)

  OpenStruct.new result
end