Class: Babl::Nodes::Object
- Inherits:
-
Object
- Object
- Babl::Nodes::Object
- Defined in:
- lib/babl/nodes/object.rb
Constant Summary collapse
Instance Method Summary collapse
- #dependencies ⇒ Object
- #optimize ⇒ Object
- #pinned_dependencies ⇒ Object
- #render(ctx) ⇒ Object
- #schema ⇒ Object
Instance Method Details
#dependencies ⇒ Object
11 12 13 |
# File 'lib/babl/nodes/object.rb', line 11 def dependencies nodes.values.map(&:dependencies).reduce(Utils::Hash::EMPTY) { |a, b| Babl::Utils::Hash.deep_merge(a, b) } end |
#optimize ⇒ Object
31 32 33 34 35 36 |
# File 'lib/babl/nodes/object.rb', line 31 def optimize optimized_nodes = nodes.map { |k, v| [k, v.optimize] }.to_h optimized_object = Object.new(optimized_nodes) return optimized_object unless optimized_nodes.values.all? { |node| Constant === node } Constant.new(optimized_object.nodes.map { |k, v| [k, v.value] }.to_h.freeze, optimized_object.schema) end |
#pinned_dependencies ⇒ Object
15 16 17 18 |
# File 'lib/babl/nodes/object.rb', line 15 def pinned_dependencies nodes.values.map(&:pinned_dependencies) .reduce(Utils::Hash::EMPTY) { |a, b| Babl::Utils::Hash.deep_merge(a, b) } end |
#render(ctx) ⇒ Object
25 26 27 28 29 |
# File 'lib/babl/nodes/object.rb', line 25 def render(ctx) out = {} nodes.each { |k, v| out[k] = v.render(ctx) } out end |