private String divider(String heading) { final StringBuilder ret = new StringBuilder(); if (heading != null) { ret.append(heading).append(' '); } ret.append(divider(heading != null ? heading.length() + 1 : 0)); return ret.append('\n').toString(); }
private List<PrefixedLine> preambleLines(final int linum, final int maxLinumWidth) { return extractLines(maxLinumWidth, CONTEXT_LINES > linum ? 0 : linum - CONTEXT_LINES, linum); }
final ErrorPrinter errPrinter = new ErrorPrinter(this.document, schemas) .printer(printer()) .stringifiers(stringifiers) .pathGate(rel) .prefixProvider(rel); if (errPrinter.documentHasContent()) { errPrinter.print(error); printed = true; } else {
private void formatResult(final StringBuilder out, final ErrorHandler.HandledResult result) { final int linum = result.line(); final int maxLinumWidth = ("" + linum + CONTEXT_LINES).length(); final List<PrefixedLine> preambleLines = preambleLines(linum, maxLinumWidth); final List<PrefixedLine> postambleLines = postambleLines(linum, maxLinumWidth); final List<PrefixedLine> allLines = new ArrayList<>(); allLines.addAll(preambleLines); allLines.addAll(postambleLines); final int removeSpaces = smallestPrefixWhitespace(allLines); out.append('\n') .append(Util.withPrefix(" ", ambleString(preambleLines, removeSpaces))) .append(alignPointerMessage(maxLinumWidth + result.column() + 2 - removeSpaces, result.primaryMessages())) .append("\n") .append(Util.withPrefix(" ", ambleString(postambleLines, removeSpaces))); if (!result.secondaryMessages().isEmpty()) { result.secondaryMessages().forEach(m -> out.append("\n").append(Util.withPrefix(" ", m.toString())).append("\n")); } if (!result.secondaryResults().isEmpty()) { result.secondaryResults().forEach(r -> formatResult(out, r)); } else { out.append("\n"); } if (result.originalMessage() != null) { out.append(Util.withPrefix(" ", I18N.lookup(I18N.Key.ORIGINAL_ERROR))).append("\n") .append(Util.withPrefix(" > ", Util.indentLinesAfterNth(2, WRAPPED_LINE_INDENT, Util.wrapString(WRAPPED_LINE_WIDTH, result.originalMessage())))) .append("\n\n"); } }
public void print(ValidationError error) { final ErrorHandler.HandledResult res = this.context.handle(error); if (res != null) { final StringBuilder out = new StringBuilder() .append('\n') .append(divider(I18N.validationErrorIn(Util.documentName(this.docURL)))); formatResult(out, res); out.append(divider(1)) .append('\n'); this.printer.printlnErr(Util.withPrefixAfterNth(2, "|", out.toString())); } }
private List<PrefixedLine> extractLines(final int maxLinumWidth, final int start, final int end) { final List<PrefixedLine> ret = new ArrayList<>(); int linum = start; for (String line: this.context.extractLines(start, end)) { ret.add(new PrefixedLine(linumPrefix(linum, maxLinumWidth), line)); linum++; } return ret; }
private List<PrefixedLine> postambleLines(final int linum, final int maxLinumWidth) { return extractLines(maxLinumWidth, linum, CONTEXT_LINES + linum > this.context.documentLineCount() ? this.context.documentLineCount() : linum + CONTEXT_LINES); }