Permalink
Browse files

support contiguous stream output in notebook

Consecutive messages to stdout or stderr will not be split
into separate divs, until a new message to different stream
arrives.

Appending will only occur when the latest output is the same
as the new one. Interleaving messages will still result in
multiple divs.
  • Loading branch information...
minrk committed Oct 1, 2011
1 parent 10ffd86 commit ce4076dcf6314dbcc27286224d82e2de1ba9f5b7
@@ -251,6 +251,23 @@ var IPython = (function (IPython) {
CodeCell.prototype.append_stream = function (json) {
+ // temporary fix: if stream undefined (json file written prior to this patch),
+ // default to most likely stdout:
+ if (json.stream == undefined){
+ json.stream = 'stdout';
+ }
+ if (this.outputs.length > 0){
+ // have at least one output to consider
+ var last = this.outputs[this.outputs.length-1];
+ if (last.output_type == 'stream' && json.stream == last.stream){
+ // latest output was in the same stream,
+ // so append directly into its pre tag
+ this.element.find('div.output_stream').last().find('pre').append(json.text);
+ return;
+ }
+ }
+
+ // If we got here, attach a new div
var toinsert = this.create_output_area();
this.append_text(json.text, toinsert);
this.element.find('div.output').append(toinsert);
@@ -710,7 +710,8 @@ var IPython = (function (IPython) {
var json = {};
json.output_type = msg_type;
if (msg_type === "stream") {
- json.text = utils.fixConsole(content.data + '\n');
+ json.text = utils.fixConsole(content.data);
+ json.stream = content.name;
} else if (msg_type === "display_data") {
json = this.convert_mime_types(json, content.data);
} else if (msg_type === "pyout") {

0 comments on commit ce4076d

Please sign in to comment.