# class Puppet::Parser::AST::Branch

The parent class of all AST objects that contain other AST objects. Everything but the really simple objects descend from this. It is important to note that Branch objects contain other AST objects only – if you want to contain values, use a descendent of the AST::Leaf class.

### Attributes

children[RW]
pin[RW]

### Public Class Methods

new(arghash) click to toggle source

Initialize our object. Largely relies on the method from the base class, but also does some verification.

Calls superclass method

    # File lib/puppet/parser/ast/branch.rb, line 22
    def initialize(arghash)
      super(arghash)

      # Create the hash, if it was not set at initialization time.
      @children ||= []

      # Verify that we only got valid AST nodes.
      @children.each { |child|
        unless child.is_a?(AST)
          raise Puppet::DevError,
            "child #{child} is a #{child.class} instead of ast"
        end
      }
    end

### Public Instance Methods

each() { |child| ... } click to toggle source

Yield each contained AST node in turn. Used mostly by ‘evaluate’. This definition means that I don’t have to override ‘evaluate’ every time, but each child of Branch will likely need to override this method.

    # File lib/puppet/parser/ast/branch.rb, line 14
    def each
      @children.each { |child|
        yield child
      }
    end