Class: Forester::NodeContent::Dictionary

Inherits:
Base
  • Object
show all
Defined in:
lib/forester/node_content/dictionary.rb

Instance Method Summary collapse

Instance Method Details

#[](key) ⇒ Object



18
19
20
# File 'lib/forester/node_content/dictionary.rb', line 18

def [](key)
  super(best key)
end

#[]=(key, value, options = {}) ⇒ Object Also known as: put!



32
33
34
35
36
37
38
39
40
41
42
# File 'lib/forester/node_content/dictionary.rb', line 32

def []=(key, value, options = {})
  default_options = {
    symbolize_key: true
  }
  options = default_options.merge(options)

  convert_key = ->(k) { k }
  convert_key = ->(k) { k.to_sym } if options[:symbolize_key]

  super(convert_key.call(key), value)
end

#delete(key, default = :yield_to_block, &block) ⇒ Object Also known as: del!



45
46
47
48
49
50
51
52
# File 'lib/forester/node_content/dictionary.rb', line 45

def delete(key, default = :yield_to_block, &block)
  best_key = best key
  if default == :yield_to_block
    super(best_key, &block)
  else
    super(best_key, default, &block)
  end
end

#fetch(key, default = :yield_to_block, &block) ⇒ Object Also known as: get



22
23
24
25
26
27
28
29
# File 'lib/forester/node_content/dictionary.rb', line 22

def fetch(key, default = :yield_to_block, &block)
  best_key = best key
  if default == :yield_to_block
    super(best_key, &block)
  else
    super(best_key, default, &block)
  end
end

#fieldsObject



5
6
7
# File 'lib/forester/node_content/dictionary.rb', line 5

def fields
  keys
end

#has_key?(key, indifferent = true) ⇒ Boolean Also known as: has?

Returns:

  • (Boolean)


9
10
11
12
13
14
15
# File 'lib/forester/node_content/dictionary.rb', line 9

def has_key?(key, indifferent = true)
  if indifferent
    equivs(key).any? { |k| super(k) }
  else
    super(key)
  end
end

#merge(dictionary) ⇒ Object



75
76
77
# File 'lib/forester/node_content/dictionary.rb', line 75

def merge(dictionary)
  self.class.new(super)
end

#to_hash(options = {}) ⇒ Object



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/forester/node_content/dictionary.rb', line 55

def to_hash(options = {})
  default_options = {
    fields_to_include: fields, # all of them
    stringify_keys:    false,
    symbolize_keys:    false
  }
  options = default_options.merge(options)
  options[:fields_to_include] = fields if options[:fields_to_include] == :all

  convert_key = ->(k) { k }
  convert_key = ->(k) { k.to_s }   if options[:stringify_keys]
  convert_key = ->(k) { k.to_sym } if options[:symbolize_keys]

  each_with_object({}) do |(k, v), hash|
    if equivs(k).any? { |eq| options[:fields_to_include].include?(eq) }
      hash[convert_key.call(k)] = v
    end
  end
end