Class: TagOptions::HashAt

Inherits:
Object
  • Object
show all
Includes:
ConvertKey
Defined in:
lib/tag_options/hash_at.rb

Instance Method Summary collapse

Methods included from ConvertKey

#convert_key

Constructor Details

#initialize(opt_hash:, keys:, as:) ⇒ HashAt

Returns a new instance of HashAt.



8
9
10
11
12
13
# File 'lib/tag_options/hash_at.rb', line 8

def initialize(opt_hash:, keys:, as:)
  @opt_hash = opt_hash
  @keys = keys[..-2].map { |key| convert_key(key) }
  @value_key = convert_key(keys[-1])
  @resolver = TagOptions.configuration.resolver(as)
end

Instance Method Details

#combine!(*values, **conditions) ⇒ Object



15
16
17
18
# File 'lib/tag_options/hash_at.rb', line 15

def combine!(*values, **conditions)
  current_value = @opt_hash.dig(*@keys, @value_key)
  set_value! @resolver.call(current_value, *values, **conditions)
end

#default!(*values, **conditions) ⇒ Object



20
21
22
# File 'lib/tag_options/hash_at.rb', line 20

def default!(*values, **conditions)
  set_default! @resolver.call(*values, **conditions)
end

#remove!(*values, **conditions) ⇒ Object



28
29
30
31
# File 'lib/tag_options/hash_at.rb', line 28

def remove!(*values, **conditions)
  regex_values, values = values.flatten.partition { |v| v.is_a?(Regexp) }
  remove_values!(*regex_values, *@resolver.values(*values, **conditions))
end

#set!(*values, **conditions) ⇒ Object



24
25
26
# File 'lib/tag_options/hash_at.rb', line 24

def set!(*values, **conditions)
  set_value! @resolver.call(*values, **conditions)
end