![JAR search and dependency download from the Maven repository](/logo.png)
japicmp.output.markdown.MarkdownReferences Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of japicmp Show documentation
Show all versions of japicmp Show documentation
japicmp is a library that computes the differences between two
versions of a jar file/artifact in order to ease the API documentation for clients/customers.
package japicmp.output.markdown;
import static java.util.Comparator.comparing;
import java.util.ArrayList;
import java.util.List;
final class MarkdownReferences extends Markdown {
private final List references = new ArrayList<>();
private int referenceId;
MarkdownStoredReference make(String href, String id, String title) {
final MarkdownReference reference = new MarkdownReference(href, title);
return references.stream().filter(reference::equals).findAny()
.orElseGet(() -> storeReference(id, reference));
}
MarkdownRefLink link(String href, String text, String title) {
return make(href, text, title).toLink(text);
}
private MarkdownStoredReference storeReference(String id, MarkdownReference reference) {
final MarkdownStoredReference stored;
if (isIllegalReferenceId(id) || alreadyUsedReferenceId(id)) {
stored = new MarkdownStoredReference(++referenceId, reference);
} else {
stored = new MarkdownStoredReference(id, reference);
}
references.add(stored);
return stored;
}
private boolean isIllegalReferenceId(String text) {
return text == null || text.isEmpty() || text.contains(BRACKET_OPEN) || text.contains(BRACKET_CLOSE);
}
private boolean alreadyUsedReferenceId(String id) {
return references.stream().map(MarkdownStoredReference::getId).anyMatch(id::equals);
}
@Override
public String toString() {
return references.stream()
.sorted(comparing(MarkdownStoredReference::getIndex).thenComparing(MarkdownStoredReference::getId))
.map(MarkdownStoredReference::toString).collect(LINES);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy