public static List getLines()

in report-builder/src/jetbrains/coverage/report/impl/StringUtil.java [30:69]


  public static List<CharSequence> getLines(@NotNull CharSequence text) {
    List<CharSequence> result = new ArrayList<CharSequence>();
    int lineStart = -1;
    int lineEnd = 0;
    for (int i=0; i< text.length(); i++) {
      char c = text.charAt(i);
      boolean addLine = false;
      switch (c) {
        default:
          if (lineStart < 0) { lineStart = i; }
          lineEnd = i+1;
          break;
        case '\r':
          addLine = true;
          Character next = charAtOrNull(i+1, text);
          if (next != null && next == '\n') i++;
          break;
        case '\n':
          Character nextChar = charAtOrNull(i+1, text);
          if (nextChar == null || nextChar != '\r') {
            addLine = true;
          }
          break;
      }

      if (addLine) {
        if (lineStart < 0 || lineStart >= lineEnd ) {
          result.add(EMPTY);
        } else {
          result.add(text.subSequence(lineStart, lineEnd));
        }
        lineStart = -1;
        lineEnd = -1;
      }
    }
    if (lineStart >= 0) {
      result.add(text.subSequence(lineStart, lineEnd));
    }
    return result;
  }