private List<String> getReformatedPieces(String in, PieceMarkerSpec[] markers) { CodeReformatorKernel kernel = new CodeReformatorKernel(_statementSeparator, markers, _commentSpecs); String[] pieces = kernel.toPieces(in); ArrayList<String> piecesBuf = new ArrayList<String>(); for (int i = 0; i < pieces.length; ++i) { if (TRY_SPLIT_LINE_LEN < pieces[i].length()) { String[] splitPieces = trySplit(pieces[i], 0, TRY_SPLIT_LINE_LEN); piecesBuf.addAll(Arrays.asList(splitPieces)); } else { piecesBuf.add(pieces[i]); } } return piecesBuf; }
private String[] trySplit(String piece, int braketDepth, int trySplitLineLen) { String trimmedPiece = piece.trim(); CodeReformatorKernel dum = new CodeReformatorKernel(_statementSeparator, new PieceMarkerSpec[0], _commentSpecs); if (hasTopLevelColon(trimmedPiece, dum)) { PieceMarkerSpec[] pms = createPieceMarkerSpecIncludeColon(); CodeReformatorKernel crk = new CodeReformatorKernel(_statementSeparator, pms, _commentSpecs); String[] splitPieces1 = crk.toPieces(trimmedPiece); if (1 == splitPieces1.length) { return splitPieces1; } ArrayList<String> ret = new ArrayList<String>(); for (int i = 0; i < splitPieces1.length; ++i) { if (trySplitLineLen < splitPieces1[i].length() + braketDepth * INDENT.length()) { String[] splitPieces2 = trySplit(splitPieces1[i], braketDepth, trySplitLineLen); for (int j = 0; j < splitPieces2.length; ++j) { ret.add(splitPieces2[j].trim()); } } else { ret.add(splitPieces1[i].trim()); } } return (purgeEmptyStrings(ret)).toArray(new String[0]); } else { int[] tlbi = getTopLevelBraketIndexes(trimmedPiece, dum); if (-1 != tlbi[0] && tlbi[0] < tlbi[1]) { // //////////////////////////////////////////////////////////////////////// // Split the first two matching toplevel brakets here PieceMarkerSpec[] pms = createPieceMarkerSpecExcludeColon(); CodeReformatorKernel crk = new CodeReformatorKernel(_statementSeparator, pms, _commentSpecs); String[] splitPieces1 = crk.toPieces(trimmedPiece.substring(tlbi[0] + 1, tlbi[1])); ArrayList<String> buf = new ArrayList<String>(); buf.add(trimmedPiece.substring(0, tlbi[0]).trim()); buf.add("("); for (int i = 0; i < splitPieces1.length; ++i) { buf.add(splitPieces1[i]); } buf.add(")"); if (tlbi[1] + 1 < trimmedPiece.length()) { buf.add(trimmedPiece.substring(tlbi[1] + 1, trimmedPiece.length()).trim()); } splitPieces1 = buf.toArray(new String[0]); // // //////////////////////////////////////////////////////////////////// // /////////////////////////////////////////////////////////////////// // Now check length of Strings in splitPieces1 again ArrayList<String> ret = new ArrayList<String>(); for (int i = 0; i < splitPieces1.length; ++i) { if (trySplitLineLen < splitPieces1[i].length() + braketDepth * INDENT.length()) { String[] splitPieces2 = trySplit(splitPieces1[i], braketDepth + 1, trySplitLineLen); for (int j = 0; j < splitPieces2.length; ++j) { ret.add(splitPieces2[j]); } } else { ret.add(splitPieces1[i]); } } // // /////////////////////////////////////////////////////////////////// return (purgeEmptyStrings(ret)).toArray(new String[0]); } else { return new String[] {piece}; } } }