private void OnDisplayEvent(DisplayEventBase displayEvent, ZeroMQMessage request, IJupyterMessageSender jupyterMessageSender) { if (displayEvent is ReturnValueProduced && displayEvent.Value is DisplayedValue) { return; } var transient = CreateTransient(displayEvent.ValueId); var formattedValues = displayEvent .FormattedValues .ToDictionary(k => k.MimeType, v => PreserveJson(v.MimeType, v.Value)); var value = displayEvent.Value; PubSubMessage dataMessage; switch (displayEvent) { case DisplayedValueProduced _: dataMessage = new DisplayData( transient: transient, data: formattedValues); break; case DisplayedValueUpdated _: dataMessage = new UpdateDisplayData( transient: transient, data: formattedValues); break; case ReturnValueProduced _: dataMessage = new ExecuteResult( _executionCount, transient: transient, data: formattedValues); break; case StandardOutputValueProduced _: dataMessage = Stream.StdOut(GetPlainTextValueOrDefault(formattedValues, value?.ToString() ?? string.Empty)); break; case StandardErrorValueProduced _: case ErrorProduced _: dataMessage = Stream.StdErr(GetPlainTextValueOrDefault(formattedValues, value?.ToString() ?? string.Empty)); break; default: throw new ArgumentException("Unsupported event type", nameof(displayEvent)); } var isSilent = ((ExecuteRequest)request.Content).Silent; if (!isSilent) { // send on io jupyterMessageSender.Send(dataMessage); } }
public static FormattedValue GetPlainText(this DisplayEventBase displayEvent) { var formattedValue = displayEvent.FormattedValues.SingleOrDefault(d => d.MimeType == PlainTextFormatter.MimeType); return(formattedValue); }
private void OnDisplayEvent( DisplayEventBase displayEvent, Message request, IMessageSender ioPubChannel) { var transient = CreateTransient(displayEvent.ValueId); var formattedValues = displayEvent .FormattedValues .ToDictionary(k => k.MimeType, v => v.Value); var value = displayEvent.Value; CreateDefaultFormattedValueIfEmpty(formattedValues, value); JupyterMessageContent executeResultData; switch (displayEvent) { case DisplayedValueProduced _: executeResultData = new DisplayData( transient: transient, data: formattedValues); break; case ReturnValueProduced _: executeResultData = new ExecuteResult( _executionCount, transient: transient, data: formattedValues); break; case DisplayedValueUpdated _: executeResultData = new UpdateDisplayData( transient: transient, data: formattedValues); break; default: throw new ArgumentException("Unsupported event type", nameof(displayEvent)); } SendDisplayData(executeResultData, request, ioPubChannel); }