in zeppelin-interpreter/src/main/java/org/apache/zeppelin/interpreter/InterpreterOutput.java [212:297]
public void write(int b) throws IOException {
InterpreterResultMessageOutput out;
if (truncated) {
return;
}
this.lastWriteTimestamp = System.currentTimeMillis();
synchronized (resultMessageOutputs) {
currentOut = getCurrentOutput();
if (++size > LIMIT) {
if (b == NEW_LINE_CHAR && currentOut != null) {
InterpreterResult.Type type = currentOut.getType();
if (type == InterpreterResult.Type.TEXT || type == InterpreterResult.Type.TABLE) {
setType(InterpreterResult.Type.HTML);
getCurrentOutput().write(ResultMessages.getExceedsLimitSizeMessage(LIMIT,
"ZEPPELIN_INTERPRETER_OUTPUT_LIMIT").getData().getBytes());
truncated = true;
return;
}
}
}
if (b == LINE_FEED_CHAR) {
if (lastCRIndex == -1) {
lastCRIndex = size;
}
// reset size to index of last carriage return
size = lastCRIndex;
}
if (startOfTheNewLine) {
if (b == '%') {
startOfTheNewLine = false;
firstCharIsPercentSign = true;
buffer.write(b);
previousChar = b;
return;
} else if (b != NEW_LINE_CHAR) {
startOfTheNewLine = false;
}
}
if (b == NEW_LINE_CHAR) {
if (currentOut != null && currentOut.getType() == InterpreterResult.Type.TABLE) {
if (previousChar == NEW_LINE_CHAR) {
startOfTheNewLine = true;
return;
}
} else {
startOfTheNewLine = true;
}
}
boolean flushBuffer = false;
if (firstCharIsPercentSign) {
if (b == ' ' || b == NEW_LINE_CHAR || b == '\t') {
firstCharIsPercentSign = false;
String displaySystem = buffer.toString();
for (InterpreterResult.Type type : InterpreterResult.Type.values()) {
if (displaySystem.equals('%' + type.name().toLowerCase())) {
// new type detected
setType(type);
previousChar = b;
return;
}
}
// not a defined display system
flushBuffer = true;
} else {
buffer.write(b);
previousChar = b;
return;
}
}
out = getCurrentOutputForWriting();
if (flushBuffer) {
out.write(buffer.toByteArray());
buffer.reset();
}
out.write(b);
previousChar = b;
}
}