Sha256: 1bc70d217039eb9e77643e15e27297ab3617e450513800733ab7d7f1dd6b73b3

Contents?: true

Size: 1.01 KB

Versions: 78

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

require "active_support/concern"

module Primer
  # :nodoc:
  module Status
    # DSL to allow components to register their status.
    #
    # Example:
    #
    # class MyComponent < ViewComponent::Base
    #   include Primer::Status::Dsl
    #   status :beta
    # end
    module Dsl
      extend ActiveSupport::Concern

      STATUSES = {
        alpha: :alpha,
        beta: :beta,
        stable: :stable,
        deprecated: :deprecated,
        experimental: :experimental,
        open_project: :open_project
      }.freeze

      class UnknownStatusError < StandardError; end

      included do
        class_attribute :component_status, instance_writer: false, default: STATUSES[:alpha]
      end

      class_methods do
        def status(status = nil)
          return component_status if status.nil?

          raise UnknownStatusError, "status #{status} does not exist" if STATUSES[status].nil?

          self.component_status = STATUSES[status]
        end
      end
    end
  end
end

Version data entries

78 entries across 78 versions & 1 rubygems

Version Path
openproject-primer_view_components-0.54.0 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.53.1 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.53.0 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.52.4 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.52.3 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.52.2 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.52.1 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.52.0 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.51.0 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.50.1 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.50.0 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.49.2 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.49.1 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.49.0 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.48.2 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.48.1 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.48.0 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.47.1 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.47.0 app/lib/primer/status/dsl.rb
openproject-primer_view_components-0.46.1 app/lib/primer/status/dsl.rb