Sha256: 89f85084a98186b60e07d5033c304c14b106051f3075dfad510b380c0778c071

Contents?: true

Size: 798 Bytes

Versions: 4

Compression:

Stored size: 798 Bytes

Contents

# frozen_string_literal: true

require "active_support/concern"

module Primer
  # :nodoc:
  module ViewHelper
    # DSL to allow components to register a View Helper for shorthand calls.
    #
    # Example:
    #
    # class MyComponent < ViewComponent::Base
    #   include Primer::ViewHelper::Dsl
    #   view_helper :my_component
    # end
    module Dsl
      extend ActiveSupport::Concern

      class ViewHelperAlreadyDefined < StandardError; end

      included do
        class_attribute :primer_helpers, instance_writer: false, default: {}
      end

      class_methods do
        def view_helper(name)
          raise ViewHelperAlreadyDefined, "#{name} is already defined" if primer_helpers[name].present?

          primer_helpers[name] = self
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
primer_view_components-0.0.27 app/lib/primer/view_helper/dsl.rb
primer_view_components-0.0.26 app/lib/primer/view_helper/dsl.rb
primer_view_components-0.0.25 app/lib/primer/view_helper/dsl.rb
primer_view_components-0.0.24 app/lib/primer/view_helper/dsl.rb