Class: Babl::Nodes::Nav
- Inherits:
-
Object
- Object
- Babl::Nodes::Nav
- Defined in:
- lib/babl/nodes/nav.rb
Instance Method Summary collapse
- #dependencies ⇒ Object
- #optimize ⇒ Object
- #pinned_dependencies ⇒ Object
- #render(ctx) ⇒ Object
- #schema ⇒ Object
Instance Method Details
#dependencies ⇒ Object
9 10 11 12 13 14 15 16 17 |
# File 'lib/babl/nodes/nav.rb', line 9 def dependencies node_deps = node.dependencies child_deps = node.dependencies.reject { |key, _| key == Parent::PARENT_MARKER } Babl::Utils::Hash.deep_merge( node_deps[Parent::PARENT_MARKER] || Utils::Hash::EMPTY, property => child_deps ) end |
#optimize ⇒ Object
36 37 38 39 40 41 |
# File 'lib/babl/nodes/nav.rb', line 36 def optimize optimized = node.optimize return optimized if Constant === optimized return optimized.node if Parent === optimized Nav.new(property, optimized) end |
#pinned_dependencies ⇒ Object
23 24 25 |
# File 'lib/babl/nodes/nav.rb', line 23 def pinned_dependencies node.pinned_dependencies end |
#render(ctx) ⇒ Object
27 28 29 30 31 32 33 34 |
# File 'lib/babl/nodes/nav.rb', line 27 def render(ctx) value = begin ::Hash === ctx.object ? ctx.object.fetch(property) : ctx.object.send(property) rescue StandardError => e raise Errors::RenderingError, "#{e.message}\n" + ctx.formatted_stack(property), e.backtrace end node.render(ctx.move_forward(value, property)) end |
#schema ⇒ Object
19 20 21 |
# File 'lib/babl/nodes/nav.rb', line 19 def schema node.schema end |