Class: WebTranslateIt::Safe::Config::Node
- Inherits:
-
Object
- Object
- WebTranslateIt::Safe::Config::Node
- Includes:
- Enumerable
- Defined in:
- lib/web_translate_it/safe/config/node.rb
Instance Attribute Summary collapse
-
#data ⇒ Object
readonly
Returns the value of attribute data.
-
#parent ⇒ Object
readonly
Returns the value of attribute parent.
Instance Method Summary collapse
- #dump(indent = '') ⇒ Object
- #each ⇒ Object
-
#find ⇒ Object
(also: #[])
recursive find starts at the node and continues to the parent.
-
#get(*path) ⇒ Object
looks for the path from this node DOWN.
-
#initialize(parent = nil, data = {}) ⇒ Node
constructor
A new instance of Node.
- #merge(data = {}, &block) ⇒ Object
- #set(key, value) ⇒ Object (also: #[]=)
- #set_multi(key, value) ⇒ Object
- #to_hash ⇒ Object
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
#data ⇒ Object (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 |
#parent ⇒ Object (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 |
#each ⇒ Object
49 50 51 |
# File 'lib/web_translate_it/safe/config/node.rb', line 49 def each(&) @data.each(&) end |
#find ⇒ 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(*) get(*) || @parent&.find(*) 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_hash ⇒ Object
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 |