internal MimeBundle EncodeForDisplay()

in src/Engines/BaseEngine.cs [357:393]


        internal MimeBundle EncodeForDisplay(object displayable)
        {
            // Each serializer contributes what it can for a given object,
            // and we take the union of their contributions, with preference
            // given to the last serializers registered.
            var displayData = MimeBundle.Empty();

            foreach ((var mimeType, var encoders) in serializers)
            {
                foreach (var encoder in encoders)
                {
                    try
                    {
                        var encoded = encoder.Encode(displayable);
                        if (encoded == null)
                        {
                            continue;
                        }
                        else
                        {
                            displayData.Data[mimeType] = encoded.Value.Data;
                            if (encoded.Value.Metadata != null)
                            {
                                displayData.Metadata[mimeType] = encoded.Value.Metadata;
                            }
                            break;
                        }
                    }
                    catch (Exception e)
                    {
                        this.Logger.LogWarning(e, $"Encoder {encoder.GetType().FullName} threw an exception encoding '{displayable}' ({e.Message}).");
                    }
                }
            }

            return displayData;
        }