Class: Babl::Nodes::Merge

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

Instance Method Summary collapse

Instance Method Details

#dependenciesObject



8
9
10
# File 'lib/babl/nodes/merge.rb', line 8

def dependencies
    nodes.map(&:dependencies).reduce({}) { |a, b| Babl::Utils::Hash.deep_merge(a, b) }
end

#pinned_dependenciesObject



12
13
14
# File 'lib/babl/nodes/merge.rb', line 12

def pinned_dependencies
    nodes.map(&:pinned_dependencies).reduce({}) { |a, b| Babl::Utils::Hash.deep_merge(a, b) }
end

#render(ctx) ⇒ Object



20
21
22
23
24
25
# File 'lib/babl/nodes/merge.rb', line 20

def render(ctx)
    nodes.map { |node| node.render(ctx) }.compact.reduce({}) { |acc, val|
        raise Errors::RenderingError, "Only objects can be merged\n" + ctx.formatted_stack unless ::Hash === val
        acc.merge!(val)
    }
end

#schemaObject



16
17
18
# File 'lib/babl/nodes/merge.rb', line 16

def schema
    nodes.map(&:schema).reduce(Schema::Object::EMPTY) { |a, b| merge_doc(a, b) }
end