class Puppet::Pops::Model::ModelTreeDumper

Dumps a Pops::Model in reverse polish notation; i.e. LISP style The intention is to use this for debugging output TODO: BAD NAME - A DUMP is a Ruby Serialization

Public Instance Methods

dump_AccessExpression(o) click to toggle source

x prints as (slice x y)

# File lib/puppet/pops/model/model_tree_dumper.rb, line 40
def dump_AccessExpression o
  if o.keys.size <= 1
    ["slice", do_dump(o.left_expr), do_dump(o.keys[0])]
  else
    ["slice", do_dump(o.left_expr), do_dump(o.keys)]
  end
end
dump_AndExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 92
def dump_AndExpression o
  ["&&", do_dump(o.left_expr), do_dump(o.right_expr)]
end
dump_ArithmeticExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 35
def dump_ArithmeticExpression o
  [o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
end
dump_Array(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 6
def dump_Array o
  o.collect {|e| do_dump(e) }
end
dump_AssignmentExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 104
def dump_AssignmentExpression o
  [o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
end
dump_AttributeOperation(o) click to toggle source

Produces (name => expr) or (name +> expr)

# File lib/puppet/pops/model/model_tree_dumper.rb, line 109
def dump_AttributeOperation o
  [o.attribute_name, o.operator, do_dump(o.value_expr)]
end
dump_AttributesOperation(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 113
def dump_AttributesOperation o
  ['* =>', do_dump(o.expr)]
end
dump_BlockExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 193
def dump_BlockExpression o
  result = ["block", :indent]
  o.statements.each {|x| result << :break; result << do_dump(x) }
  result << :dedent << :break
  result
end
dump_CallMethodExpression(o) click to toggle source

def #dump_CallNamedFunctionExpression o

result = [o.rval_required ? "call" : "invoke", do_dump(o.functor_expr)]
o.arguments.collect {|a| result << do_dump(a) }
result

end

# File lib/puppet/pops/model/model_tree_dumper.rb, line 325
def dump_CallMethodExpression o
  result = [o.rval_required ? "call-method" : "invoke-method", do_dump(o.functor_expr)]
  o.arguments.collect {|a| result << do_dump(a) }
  result << do_dump(o.lambda) if o.lambda
  result
end
dump_CallNamedFunctionExpression(o) click to toggle source

Produces (invoke name args…) when not required to produce an rvalue, and (call name args … ) otherwise.

# File lib/puppet/pops/model/model_tree_dumper.rb, line 313
def dump_CallNamedFunctionExpression o
  result = [o.rval_required ? "call" : "invoke", do_dump(o.functor_expr)]
  o.arguments.collect {|a| result << do_dump(a) }
  result
end
dump_CaseExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 332
def dump_CaseExpression o
  result = ["case", do_dump(o.test), :indent]
  o.options.each do |s|
    result << :break << do_dump(s)
  end
  result << :dedent
end
dump_CaseOption(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 340
def dump_CaseOption o
  result = ["when"]
  result << o.values.collect {|x| do_dump(x) }
  result << ["then", do_dump(o.then_expr) ]
  result
end
dump_CollectExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 52
def dump_CollectExpression o
  result = ["collect", do_dump(o.type_expr), :indent, :break, do_dump(o.query), :indent]
  o.operations do |ao|
    result << :break << do_dump(ao)
  end
  result += [:dedent, :dedent ]
  result
end
dump_ComparisonExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 88
def dump_ComparisonExpression o
  [o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
end
dump_ConcatenatedString(o) click to toggle source

Interpolated strings are shown as (cat seg0 seg1 … segN)

# File lib/puppet/pops/model/model_tree_dumper.rb, line 201
def dump_ConcatenatedString o
  ["cat"] + o.segments.collect {|x| do_dump(x)}
end
dump_EppExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 61
  def dump_EppExpression o
    result = ["epp"]
#    result << ["parameters"] + o.parameters.collect {|p| do_dump(p) } if o.parameters.size() > 0
    if o.body
      result << do_dump(o.body)
    else
      result << []
    end
    result
  end
dump_ExportedQuery(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 72
def dump_ExportedQuery o
  result = ["<<| |>>"]
  result += dump_QueryExpression(o) unless is_nop?(o.expr)
  result
end
dump_Factory(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 31
def dump_Factory o
  do_dump(o.current)
end
dump_HeredocExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 205
def dump_HeredocExpression(o)
  result = ["@(#{o.syntax})", :indent, :break, do_dump(o.text_expr), :dedent, :break]
end
dump_HostClassDefinition(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 209
def dump_HostClassDefinition o
  result = ["class", o.name]
  result << ["inherits", o.parent_class] if o.parent_class
  result << ["parameters"] + o.parameters.collect {|p| do_dump(p) } if o.parameters.size() > 0
  if o.body
    result << do_dump(o.body)
  else
    result << []
  end
  result
end
dump_IfExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 290
def dump_IfExpression o
  result = ["if", do_dump(o.test), :indent, :break,
    ["then", :indent, do_dump(o.then_expr), :dedent]]
  result +=
  [:break,
    ["else", :indent, do_dump(o.else_expr), :dedent],
    :dedent] unless is_nop? o.else_expr
  result
end
dump_InExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 100
def dump_InExpression o
  ["in", do_dump(o.left_expr), do_dump(o.right_expr)]
end
dump_KeyedEntry(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 125
def dump_KeyedEntry o
  [do_dump(o.key), do_dump(o.value)]
end
dump_LambdaExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 137
def dump_LambdaExpression o
  result = ["lambda"]
  result << ["parameters"] + o.parameters.collect {|p| do_dump(p) } if o.parameters.size() > 0
  if o.body
    result << do_dump(o.body)
  else
    result << []
  end
  result
end
dump_LiteralDefault(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 148
def dump_LiteralDefault o
  ":default"
end
dump_LiteralFloat(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 10
def dump_LiteralFloat o
  o.value.to_s
end
dump_LiteralHash(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 121
def dump_LiteralHash o
  ["{}"] + o.entries.collect {|x| do_dump(x)}
end
dump_LiteralInteger(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 14
def dump_LiteralInteger o
  case o.radix
  when 10
    o.value.to_s
  when 8
    "0%o" % o.value
  when 16
    "0x%X" % o.value
  else
    "bad radix:" + o.value.to_s
  end
end
dump_LiteralList(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 117
def dump_LiteralList o
  ["[]"] + o.values.collect {|x| do_dump(x)}
end
dump_LiteralRegularExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 156
def dump_LiteralRegularExpression o
  "/#{o.value.source}/"
end
dump_LiteralString(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 133
def dump_LiteralString o
  "'#{o.value}'"
end
dump_LiteralUndef(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 152
def dump_LiteralUndef o
  ":undef"
end
dump_LiteralValue(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 27
def dump_LiteralValue o
  o.value.to_s
end
dump_MatchExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 129
def dump_MatchExpression o
  [o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
end
dump_MatchesExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 48
def dump_MatchesExpression o
  [o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
end
dump_NamedAccessExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 164
def dump_NamedAccessExpression o
  [".", do_dump(o.left_expr), do_dump(o.right_expr)]
end
dump_NamedDefinition(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 233
def dump_NamedDefinition o
  # the nil must be replaced with a string
  result = [nil, o.name]
  result << ["parameters"] + o.parameters.collect {|p| do_dump(p) } if o.parameters.size() > 0
  if o.body
    result << do_dump(o.body)
  else
    result << []
  end
  result
end
dump_NilClass(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 168
def dump_NilClass o
  "()"
end
dump_NodeDefinition(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 221
def dump_NodeDefinition o
  result = ["node"]
  result << ["matches"] + o.host_matches.collect {|m| do_dump(m) }
  result << ["parent", do_dump(o.parent)] if o.parent
  if o.body
    result << do_dump(o.body)
  else
    result << []
  end
  result
end
dump_Nop(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 160
def dump_Nop o
  ":nop"
end
dump_NotExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 172
def dump_NotExpression o
  ['!', dump(o.expr)]
end
dump_Object(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 400
def dump_Object o
  [o.class.to_s, o.to_s]
end
dump_OrExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 96
def dump_OrExpression o
  ["||", do_dump(o.left_expr), do_dump(o.right_expr)]
end
dump_Parameter(o) click to toggle source

Produces parameters as name, or (= name value)

# File lib/puppet/pops/model/model_tree_dumper.rb, line 266
def dump_Parameter o
  name_prefix = o.captures_rest ? '*' : ''
  name_part = "#{name_prefix}#{o.name}"
  if o.value && o.type_expr
    ["=t", do_dump(o.type_expr), name_part, do_dump(o.value)]
  elsif o.value
    ["=", name_part, do_dump(o.value)]
  elsif o.type_expr
    ["t", do_dump(o.type_expr), name_part]
  else
    name_part
  end
end
dump_ParenthesizedExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 280
def dump_ParenthesizedExpression o
  do_dump(o.expr)
end
dump_Program(o) click to toggle source

Hides that Program exists in the output (only its body is shown), the definitions are just references to contained classes, resource types, and nodes

# File lib/puppet/pops/model/model_tree_dumper.rb, line 286
def dump_Program(o)
  dump(o.body)
end
dump_QueryExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 84
def dump_QueryExpression o
  [do_dump(o.expr)]
end
dump_RelationshipExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 347
def dump_RelationshipExpression o
  [o.operator.to_s, do_dump(o.left_expr), do_dump(o.right_expr)]
end
dump_RenderExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 355
def dump_RenderExpression o
  ["render", do_dump(o.expr)]
end
dump_RenderStringExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 351
def dump_RenderStringExpression o
  ["render-s", " '#{o.value}'"]
end
dump_ReservedWord(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 261
def dump_ReservedWord o
  [ 'reserved', o.word ]
end
dump_ResourceBody(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 359
def dump_ResourceBody o
  result = [do_dump(o.title), :indent]
  o.operations.each do |p|
    result << :break << do_dump(p)
  end
  result << :dedent
  result
end
dump_ResourceDefaultsExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 368
def dump_ResourceDefaultsExpression o
  form = o.form == :regular ? '' : o.form.to_s + "-"
  result = [form+"resource-defaults", do_dump(o.type_ref), :indent]
  o.operations.each do |p|
    result << :break << do_dump(p)
  end
  result << :dedent
  result
end
dump_ResourceExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 378
def dump_ResourceExpression o
  form = o.form == :regular ? '' : o.form.to_s + "-"
  result = [form+"resource", do_dump(o.type_name), :indent]
  o.bodies.each do |b|
    result << :break << do_dump(b)
  end
  result << :dedent
  result
end
dump_ResourceOverrideExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 251
def dump_ResourceOverrideExpression o
  form = o.form == :regular ? '' : o.form.to_s + "-"
  result = [form+"override", do_dump(o.resources), :indent]
  o.operations.each do |p|
    result << :break << do_dump(p)
  end
  result << :dedent
  result
end
dump_ResourceTypeDefinition(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 245
def dump_ResourceTypeDefinition o
  result = dump_NamedDefinition(o)
  result[0] = 'define'
  result
end
dump_SelectorEntry(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 392
def dump_SelectorEntry o
  [do_dump(o.matching_expr), "=>", do_dump(o.value_expr)]
end
dump_SelectorExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 388
def dump_SelectorExpression o
  ["?", do_dump(o.left_expr)] + o.selectors.collect {|x| do_dump(x) }
end
dump_SubLocatedExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 396
def dump_SubLocatedExpression o
  ["sublocated", do_dump(o.expr)]
end
dump_TextExpression(o) click to toggle source

Interpolation (to string) shown as (str expr)

# File lib/puppet/pops/model/model_tree_dumper.rb, line 181
def dump_TextExpression o
  ["str", do_dump(o.expr)]
end
dump_UnaryMinusExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 185
def dump_UnaryMinusExpression o
  ['-', do_dump(o.expr)]
end
dump_UnfoldExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 189
def dump_UnfoldExpression o
  ['unfold', do_dump(o.expr)]
end
dump_UnlessExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 300
def dump_UnlessExpression o
  result = ["unless", do_dump(o.test), :indent, :break,
    ["then", :indent, do_dump(o.then_expr), :dedent]]
  result +=
  [:break,
    ["else", :indent, do_dump(o.else_expr), :dedent],
    :dedent] unless is_nop? o.else_expr
  result
end
dump_VariableExpression(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 176
def dump_VariableExpression o
  "$#{dump(o.expr)}"
end
dump_VirtualQuery(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 78
def dump_VirtualQuery o
  result = ["<| |>"]
  result += dump_QueryExpression(o) unless is_nop?(o.expr)
  result
end
is_nop?(o) click to toggle source
# File lib/puppet/pops/model/model_tree_dumper.rb, line 404
def is_nop? o
  o.nil? || o.is_a?(Puppet::Pops::Model::Nop)
end