# File lib/beefcake.rb, line 86 def encode!(buf, fld, fn) v = self[fld.name] v = v.is_a?(Array) ? v : [v] v.compact.each do |val| case fld.type when Class # encodable # TODO: raise error if type != val.class buf.append(:string, val.encode, fn) when Module # enum if ! valid_enum?(fld.type, val) raise InvalidValueError.new(fld.name, val) end buf.append(:int32, val, fn) else buf.append(fld.type, val, fn) end end buf end