Module: DecentDecoration::ControllerMethods

Defined in:
lib/decent_decoration/decorate.rb

Instance Method Summary collapse

Instance Method Details

#expose_decorated(name, *args, &block) ⇒ Object



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/decent_decoration/decorate.rb', line 61

def expose_decorated(name, *args, &block)
  options    = args.extract_options!
  decoration = Decoration.new(name, options)

  decorator_class  = decoration.decorator_class
  decorate_method  = decoration.decorate_method
  decorated_name   = decoration.decorated_name
  options          = decoration.options

  expose(name, *args, options, &block)
  expose(decorated_name) { decorator_class.public_send(decorate_method, public_send(name)) }

  helper Module.new do
    define_method(name) do
      public_send(decorated_name)
    end
  end
end