Sha256: fdf80981f7b5f51c7ffa4a4722b6e018447a48b06b0a665197d57d6609c921ac

Contents?: true

Size: 1.03 KB

Versions: 4

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

class ActiveSet
  class EnumerableSetInstruction < SimpleDelegator
    def initialize(attribute_instruction, set)
      @attribute_instruction = attribute_instruction
      @set = set
      super(@attribute_instruction)
    end

    def attribute_value_for(item)
      @item_values ||= Hash.new do |h, key|
        item_value = @attribute_instruction.value_for(item: key)
        item_value = item_value.downcase if case_insensitive_operation_for?(item_value)
        h[key] = item_value
      end

      @item_values[item]
    end

    def instruction_value
      return @instruction_value if defined? @instruction_value

      instruction_value = @attribute_instruction.value
      instruction_value = instruction_value.downcase if case_insensitive_operation_for?(instruction_value)
      @instruction_value = instruction_value
    end

    def case_insensitive_operation_for?(value)
      return false unless @attribute_instruction.case_insensitive?

      value.is_a?(String) || value.is_a?(Symbol)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
actionset-0.11.0 lib/active_set/enumerable_set_instruction.rb
actionset-0.10.0 lib/active_set/enumerable_set_instruction.rb
actionset-0.9.2 lib/active_set/enumerable_set_instruction.rb
actionset-0.9.1 lib/active_set/enumerable_set_instruction.rb