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.48.2 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.48.1 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.48.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.47.1 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.47.0 app/lib/primer/experimental_render_helpers.rb
primer_view_components-0.34.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.46.1 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.46.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.45.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.44.3 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.44.2 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.44.1 app/lib/primer/experimental_render_helpers.rb
primer_view_components-0.33.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.44.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.43.1 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.43.0 app/lib/primer/experimental_render_helpers.rb
primer_view_components-0.32.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.42.0 app/lib/primer/experimental_render_helpers.rb
primer_view_components-0.31.0 app/lib/primer/experimental_render_helpers.rb
openproject-primer_view_components-0.41.1 app/lib/primer/experimental_render_helpers.rb