Sha256: a4360f5f62c7e7f195650b32cd877547604845c43b89ba517ffaba9ea2bf84e2
Contents?: true
Size: 1.66 KB
Versions: 6
Compression:
Stored size: 1.66 KB
Contents
class Puppet::Parser::AST # 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. class Branch < AST include Enumerable attr_accessor :pin, :children # 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. def each @children.each { |child| yield child } end # Initialize our object. Largely relies on the method from the base # class, but also does some verification. def initialize(arghash) super(arghash) # Create the hash, if it was not set at initialization time. unless defined? @children @children = [] end # Verify that we only got valid AST nodes. @children.each { |child| unless child.is_a?(AST) raise Puppet::DevError, "child %s is a %s instead of ast" % [child, child.class] end } end # Pretty-print the parse tree. def tree(indent = 0) return ((@@indline * indent) + self.typewrap(self.pin)) + "\n" + self.collect { |child| child.tree(indent + 1) }.join("\n") end end end
Version data entries
6 entries across 6 versions & 1 rubygems