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;
}