Class: Babl::Nodes::Nav

Inherits:
Object
  • Object
show all
Defined in:
lib/babl/nodes/nav.rb

Instance Method Summary collapse

Instance Method Details

#dependenciesObject



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

#optimizeObject



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_dependenciesObject



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

#schemaObject



19
20
21
# File 'lib/babl/nodes/nav.rb', line 19

def schema
    node.schema
end