Sha256: 8b7025ff1b67eff2641cd32ab78c927a4337488d1ce0942c83beae32b008f1aa

Contents?: true

Size: 1.54 KB

Versions: 28

Compression:

Stored size: 1.54 KB

Contents

module EitilWrapper
  module ControllerDecorator

    private

    def decorate(dec_item, dec_method: nil, dec_class: nil, **dec_kwargs)
      all_args_to_ivars binding
      set_ivars :dec_class, :dec_method, :decorator
      send_to_decorator
    end

    def send_to_decorator
      @dec_kwargs.any? ? @decorator.send(@dec_method, @dec_item, @dec_kwargs)
                       : @decorator.send(@dec_method, @dec_item)
     
      rescue NoMethodError => e       
        inform_no_method_for_decorator_error
        @dec_item
    end

    def inform_no_method_for_decorator_error
      message = "Warning: NoMethodError for #{@dec_class}.#{@dec_method}, returned @dec_item instead."
      Logger.new("#{Rails.root}/log/decorator_log.log").warn message
      warn message
    end

    def set_dec_method
      @dec_method = @dec_method || derived_dec_method || :base
    end

    def derived_dec_method
      return unless respond_to? :params
      return :app if params["isMobile"]
      return :web if params["isWeb"]
    end

    def set_dec_class
      @dec_class = @dec_class ? manual_set_dec_class : derived_dec_class
    end

    def manual_set_dec_class
      "#{@dec_class}Decorator".constantize
    end

    def derived_dec_class
      "#{@dec_item.class.name}Decorator".constantize
    end

    def set_decorator
      @decorator = @dec_class.new controller_ivars
    end

    def controller_ivars
      eval(Eitil.get_controller_ivars_method).map do |ivar|
        { ivar => instance_variable_get("@#{ivar.to_s}") }
      end.inject &:merge
    end

  end
end

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
eitil-1.1.20 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.19 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.18 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.17 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.16 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.15 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.14 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.13 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.12 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.11 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.10 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.9 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.8 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.7 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.6 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.5 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.4 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.3 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.2 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb
eitil-1.1.1 eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb