Sha256: 3de6a90405f60201aca7eaaa4e3498e45fb8905a73dcb9f10a7bd0565a98bef7

Contents?: true

Size: 879 Bytes

Versions: 97

Compression:

Stored size: 879 Bytes

Contents

# frozen_string_literal: true

module Primer
  # :nodoc:
  module ExperimentalRenderHelpers
    def self.included(base)
      base.include(InstanceMethods)
    end

    # :nodoc:
    module InstanceMethods
      def evaluate_block(*args, **kwargs, &block)
        # Prevent double renders by using the capture method on the component
        # that originally received the block.
        #
        # Handle blocks that originate from C code such as `&:method` by checking
        # source_location. Such blocks don't allow access to their receiver.
        return unless block

        return yield(*args, **kwargs) if block&.source_location.nil?

        block_context = block.binding.receiver

        if block_context.class < ActionView::Base
          block_context.capture(*args, &block)
        else
          capture(*args, &block)
        end
      end
    end
  end
end

Version data entries

97 entries across 97 versions & 2 rubygems

Version Path
openproject-primer_view_components-0.41.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.40.0 app/lib/primer/experimental_render_helpers.rb
primer_view_components-0.30.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.39.1 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.39.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.38.0 app/lib/primer/experimental_render_helpers.rb
primer_view_components-0.29.0 app/lib/primer/experimental_render_helpers.rb
primer_view_components-0.28.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.37.1 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.37.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.36.2 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.36.1 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.36.0 app/lib/primer/experimental_render_helpers.rb
primer_view_components-0.27.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.35.2 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.35.1 app/lib/primer/experimental_render_helpers.rb
primer_view_components-0.26.1 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.35.0 app/lib/primer/experimental_render_helpers.rb
primer_view_components-0.26.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.34.0 app/lib/primer/experimental_render_helpers.rb