class Puppet::Pops::Serialization::ObjectWriter
Instance writer for objects that implement {Types::PuppetObject} @api private
Constants
- INSTANCE
Public Instance Methods
write(type, value, serializer)
click to toggle source
# File lib/puppet/pops/serialization/object.rb 44 def write(type, value, serializer) 45 impl_class = value.class 46 (names, _, required_count) = type.parameter_info(impl_class) 47 args = names.map { |name| value.send(name) } 48 49 # Pop optional arguments that are default 50 while args.size > required_count 51 break unless type[names[args.size-1]].default_value?(args.last) 52 args.pop 53 end 54 55 if type.name.start_with?('Pcore::') || serializer.type_by_reference? 56 serializer.push_written(value) 57 serializer.start_pcore_object(type.name, args.size) 58 else 59 serializer.start_object(args.size + 1) 60 serializer.write(type) 61 serializer.push_written(value) 62 end 63 64 args.each { |arg| serializer.write(arg) } 65 end