blob: a6296d1a3c1c7ac1a1ffda635994d6309a4bbc43 [file] [log] [blame] [edit]
/*
* Copyright 2015-2022 the original author or authors.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v2.0 which
* accompanies this distribution and is available at
*
* https://www.eclipse.org/legal/epl-v20.html
*/
package org.junit.api.tools;
import java.io.PrintWriter;
import java.nio.CharBuffer;
import org.apiguardian.api.API;
/**
* @since 1.0
*/
class MarkdownApiReportWriter extends AbstractApiReportWriter {
private static final String MARKDOWN_FORMAT = "%-52s | %-42s | %-12s | %-27s%n";
MarkdownApiReportWriter(ApiReport apiReport) {
super(apiReport);
}
@Override
protected String h1(String header) {
return "# " + header;
}
@Override
protected String h2(String header) {
return "## " + header;
}
@Override
protected String code(String element) {
return "`" + element + "`";
}
@Override
protected String italic(String element) {
return "_" + element + "_";
}
@Override
protected void printDeclarationTableHeader(PrintWriter out) {
out.printf(MARKDOWN_FORMAT, "Package Name", "Type Name", "Since");
out.printf(MARKDOWN_FORMAT, dashes(52), dashes(42), dashes(12), dashes(27));
}
private String dashes(int length) {
return CharBuffer.allocate(length).toString().replace('\0', '-');
}
@Override
protected void printDeclarationTableRow(Class<?> type, PrintWriter out) {
out.printf(MARKDOWN_FORMAT, //
code(type.getPackage().getName()), //
code(type.getSimpleName()) + " " + italic("(" + getKind(type) + ")"), //
code(type.getAnnotation(API.class).since()) //
);
}
@Override
protected void printDeclarationTableFooter(PrintWriter out) {
/* no-op */
}
}