Sha256: 6f64ba96e2fa2f5a48bf87df15e68caf21ac4850a2ad88c9730627efdc417296

Contents?: true

Size: 1.22 KB

Versions: 42

Compression:

Stored size: 1.22 KB

Contents

# frozen_string_literal: true

module Navigator
  # Conditionally activates a tag.
  class TagActivator
    attr_reader :search_key, :search_value, :target_key, :target_value

    # rubocop:disable Metrics/ParameterLists
    def initialize search_key: :href, search_value: nil, target_key: :class, target_value: "active"
      @search_key = search_key
      @search_value = search_value
      @target_key = target_key
      @target_value = target_value
    end
    # rubocop:enable Metrics/ParameterLists

    # :reek:TooManyStatements
    def activatable? attributes = {}
      return false unless search_value.present?

      attributes = attributes.with_indifferent_access
      current_search_value = attributes[search_key]

      if current_search_value.is_a?(Regexp) || search_value.is_a?(Regexp)
        return false if current_search_value.blank?

        current_search_value.match? search_value
      else
        current_search_value == search_value
      end
    end

    def activate attributes = {}
      attributes = attributes.with_indifferent_access

      return attributes unless activatable? attributes

      attributes[target_key] = [attributes[target_key], target_value].compact.join " "
      attributes
    end
  end
end

Version data entries

42 entries across 42 versions & 1 rubygems

Version Path
navigator-11.1.0 lib/navigator/tag_activator.rb
navigator-11.0.0 lib/navigator/tag_activator.rb
navigator-10.10.0 lib/navigator/tag_activator.rb
navigator-10.9.0 lib/navigator/tag_activator.rb
navigator-10.8.0 lib/navigator/tag_activator.rb
navigator-10.7.0 lib/navigator/tag_activator.rb
navigator-10.6.0 lib/navigator/tag_activator.rb
navigator-10.5.0 lib/navigator/tag_activator.rb
navigator-10.4.0 lib/navigator/tag_activator.rb
navigator-10.3.1 lib/navigator/tag_activator.rb
navigator-10.2.0 lib/navigator/tag_activator.rb
navigator-10.1.0 lib/navigator/tag_activator.rb
navigator-10.0.0 lib/navigator/tag_activator.rb
navigator-9.0.2 lib/navigator/tag_activator.rb
navigator-9.0.1 lib/navigator/tag_activator.rb
navigator-9.0.0 lib/navigator/tag_activator.rb
navigator-8.0.3 lib/navigator/tag_activator.rb
navigator-8.0.2 lib/navigator/tag_activator.rb
navigator-8.0.1 lib/navigator/tag_activator.rb
navigator-8.0.0 lib/navigator/tag_activator.rb