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 43 def write(type, value, serializer) 44 impl_class = value.class 45 (names, _, required_count) = type.parameter_info(impl_class) 46 args = names.map { |name| value.send(name) } 47 48 # Pop optional arguments that are default 49 while args.size > required_count 50 break unless type[names[args.size-1]].default_value?(args.last) 51 args.pop 52 end 53 54 if type.name.start_with?('Pcore::') || serializer.type_by_reference? 55 serializer.push_written(value) 56 serializer.start_pcore_object(type.name, args.size) 57 else 58 serializer.start_object(args.size + 1) 59 serializer.write(type) 60 serializer.push_written(value) 61 end 62 63 args.each { |arg| serializer.write(arg) } 64 end