public void write()

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