Class: WebTranslateIt::Safe::Config::Node

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/web_translate_it/safe/config/node.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent = nil, data = {}) ⇒ Node

Returns a new instance of Node.



11
12
13
14
15
# File 'lib/web_translate_it/safe/config/node.rb', line 11

def initialize(parent = nil, data = {}, &)
  @parent = parent
  @data = {}
  merge(data, &)
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



9
10
11
# File 'lib/web_translate_it/safe/config/node.rb', line 9

def data
  @data
end

#parentObject (readonly)

Returns the value of attribute parent.



9
10
11
# File 'lib/web_translate_it/safe/config/node.rb', line 9

def parent
  @parent
end

Instance Method Details

#dump(indent = '') ⇒ Object



61
62
63
64
65
66
67
68
69
70
# File 'lib/web_translate_it/safe/config/node.rb', line 61

def dump(indent = '')
  @data.each do |key, value|
    if value.is_a?(Node)
      puts "#{indent}#{key}:"
      value.dump("#{indent}    ")
    else
      puts "#{indent}#{key}: #{value.inspect}"
    end
  end
end

#eachObject



49
50
51
# File 'lib/web_translate_it/safe/config/node.rb', line 49

def each(&)
  @data.each(&)
end

#find(*path) ⇒ Object Also known as: []

recursive find starts at the node and continues to the parent



34
35
36
# File 'lib/web_translate_it/safe/config/node.rb', line 34

def find(*path)
  get(*path) || @parent&.find(*path)
end

#get(*path) ⇒ Object

looks for the path from this node DOWN. will not delegate to parent



24
25
26
27
28
29
30
# File 'lib/web_translate_it/safe/config/node.rb', line 24

def get(*path)
  key = path.shift
  value = @data[key.to_s]
  return value if !value.nil? && path.empty?

  value&.get(*path)
end

#merge(data = {}, &block) ⇒ Object



17
18
19
20
21
# File 'lib/web_translate_it/safe/config/node.rb', line 17

def merge(data = {}, &block)
  builder = Builder.new(self, data)
  builder.instance_eval(&block) if block
  self
end

#set(key, value) ⇒ Object Also known as: []=



44
45
46
# File 'lib/web_translate_it/safe/config/node.rb', line 44

def set(key, value)
  @data[key.to_s] = value
end

#set_multi(key, value) ⇒ Object



39
40
41
42
# File 'lib/web_translate_it/safe/config/node.rb', line 39

def set_multi(key, value)
  @data[key.to_s] ||= []
  @data[key.to_s].push(*value)
end

#to_hashObject



54
55
56
57
58
59
# File 'lib/web_translate_it/safe/config/node.rb', line 54

def to_hash
  @data.keys.each_with_object({}) do |key, res|
    value = @data[key]
    res[key] = value.is_a?(Node) ? value.to_hash : value
  end
end