Sha256: 2e7b2d66837cefeacd559d97ffb349c884cf00ec660fc943db252809c13f49f9

Contents?: true

Size: 979 Bytes

Versions: 6

Compression:

Stored size: 979 Bytes

Contents

module Draper
  # Provides access to helper methods - both Rails built-in helpers, and those
  # defined in your application.
  class HelperProxy

    # @overload initialize(view_context)
    def initialize(view_context = nil)
      view_context ||= current_view_context # backwards compatibility

      @view_context = view_context
    end

    # Sends helper methods to the view context.
    def method_missing(method, *args, &block)
      self.class.define_proxy method
      send(method, *args, &block)
    end

    delegate :capture, to: :view_context

    protected

    attr_reader :view_context

    private

    def self.define_proxy(name)
      define_method name do |*args, &block|
        view_context.send(name, *args, &block)
      end
    end

    def current_view_context
      ActiveSupport::Deprecation.warn("wrong number of arguments (0 for 1) passed to Draper::HelperProxy.new", caller[1..-1])
      Draper::ViewContext.current.view_context
    end
  end
end

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
draper-1.4.0 lib/draper/helper_proxy.rb
draper-1.3.1 lib/draper/helper_proxy.rb
draper-1.3.0 lib/draper/helper_proxy.rb
draper-1.2.1 lib/draper/helper_proxy.rb
draper-1.2.0 lib/draper/helper_proxy.rb
jamesgolick-draper-1.1.1a lib/draper/helper_proxy.rb