Sha256: 111ac1d56ac307b55f16b3fa915e7f7b59d4ac3f46574ea303dbb69c13a92184

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 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

    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)
        !!(current_search_value =~ search_value)
      else
        current_search_value == search_value
      end
    end

    # rubocop:disable Metrics/LineLength
    def activate attributes = {}
      attributes = attributes.with_indifferent_access
      attributes[target_key] = [attributes[target_key], target_value].compact.join(" ") if activatable? attributes
      attributes
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
navigator-2.2.0 lib/navigator/tag_activator.rb