class Puppet::Pops::Model::TreeDumper
Base class for formatted textual dump of a “model”
Attributes
indent_count[RW]
Public Class Methods
new(initial_indentation = 0)
click to toggle source
# File lib/puppet/pops/model/tree_dumper.rb 6 def initialize initial_indentation = 0 7 @@dump_visitor ||= Puppet::Pops::Visitor.new(nil,"dump",0,0) 8 @indent_count = initial_indentation 9 end
Public Instance Methods
do_dump(o)
click to toggle source
# File lib/puppet/pops/model/tree_dumper.rb 15 def do_dump(o) 16 @@dump_visitor.visit_this_0(self, o) 17 end
dump(o)
click to toggle source
# File lib/puppet/pops/model/tree_dumper.rb 11 def dump(o) 12 format(do_dump(o)) 13 end
format(x)
click to toggle source
# File lib/puppet/pops/model/tree_dumper.rb 23 def format(x) 24 result = String.new 25 parts = format_r(x) 26 parts.each_index do |i| 27 if i > 0 28 # separate with space unless previous ends with whitespace or ( 29 result << ' ' if parts[i] != ")" && parts[i-1] !~ /.*(?:\s+|\()$/ && parts[i] !~ /^\s+/ 30 end 31 result << parts[i].to_s 32 end 33 result 34 end
format_r(x)
click to toggle source
# File lib/puppet/pops/model/tree_dumper.rb 36 def format_r(x) 37 result = [] 38 case x 39 when :break 40 result << "\n" + indent 41 when :indent 42 @indent_count += 1 43 when :dedent 44 @indent_count -= 1 45 when Array 46 result << '(' 47 result += x.collect {|a| format_r(a) }.flatten 48 result << ')' 49 when Symbol 50 result << x.to_s # Allows Symbols in arrays e.g. ["text", =>, "text"] 51 else 52 result << x 53 end 54 result 55 end
indent()
click to toggle source
# File lib/puppet/pops/model/tree_dumper.rb 19 def indent 20 " " * indent_count 21 end
is_nop?(o)
click to toggle source
# File lib/puppet/pops/model/tree_dumper.rb 57 def is_nop? o 58 o.nil? || o.is_a?(Puppet::Pops::Model::Nop) 59 end