private void assertLiteralText(String actual, String expected) throws IOException { DocWriter writer = new DocWriter(); writer.literalMode(); writer.write(actual); assertEquals(expected, writer.render()); } }
@Test public void testResetParagraph() throws IOException { DocWriter writer = new DocWriter(); writer.write("abc\n def\n"); writer.resetParagraph(); writer.write("ghi\n jkl"); assertEquals("abc\ndef\nghi\njkl", writer.render()); }
void handle(Element elt) { writer = new DocWriter(); if (elt instanceof PackageElement) { PackageElement includedElt = (PackageElement) elt; } else { String link = resolveLinkToPackageDoc((PackageElement) elt); writer.append(link); writer.literalMode(); writer.append(fragment); writer.commentMode(); fragment = javaGen.renderSource(typeElt, source); if (fragment != null) { writer.literalMode(); writer.append(fragment); writer.commentMode(); writer.append("`link:").append(link).append("[").append(s).append("]`"); } else { writer.append("`").append(s).append("`");
int prev = 0; while (matcher.find()) { writer.write(content, prev, matcher.start() - prev); String value = matcher.group(1).trim(); StringTokenizer tokenizer = new StringTokenizer(value); String signature = tokenizer.nextToken(); String label = value.substring(signature.length()).trim(); writer.exec(() -> { BaseProcessor.this.visitLink(null, label, signature, generator, writer); }); writer.append(content, prev, content.length()); } catch (IOException e) { throw new DocGenException(e.getMessage());
@Override public Void visitDocComment(DocCommentTree node, Void v) { v = scan(node.getFirstSentence(), v); List<? extends DocTree> body = node.getBody(); if (body.size() > 0) { writer.append("\n\n"); writer.resetParagraph(); v = scan(body, v); } List<? extends DocTree> blockTags = node.getBlockTags(); if (blockTags.size() > 0) { writer.append("\n"); v = scan(blockTags, v); } return v; }
String render() { StringBuilder buffer = new StringBuilder(); render(buffer); return buffer.toString(); }
private Map<DocGenerator, DocWriter> handleGen(Doc doc) { Map<DocGenerator, DocWriter> map = new HashMap<>(); for (DocGenerator generator : generators()) { generator.init(processingEnv); DocWriter writer = new DocWriter(); doc.process(generator, writer); map.put(generator, writer); } return map; }
private void visitLink(PackageElement pkgElt, String label, String signature, DocGenerator generator, DocWriter writer) { ElementResolution res = resolutions.get(signature); if (res == null) { res = new ElementResolution(signature); resolutions.put(signature, res); } LinkProcessing fut = new LinkProcessing(generator, label); res.add(fut); writer.write(() -> { DocWriter ww = fut.writer; if (ww == null) { throw new DocGenException(pkgElt, "Could not resolve " + signature); } return ww; }); }
@Test public void testFuture() throws IOException { DocWriter writer = new DocWriter(); writer.write("a"); writer.write(() -> { DocWriter n1 = new DocWriter(); n1.write("b"); n1.write(() -> { DocWriter n2 = new DocWriter(); n2.write("c"); return n2; }); return n1; }); writer.write("d"); assertEquals("abcd", writer.render()); assertEquals("", writer.render()); }
private void render(StringBuilder buffer) { chunks.forEach(chunk -> { if (chunk instanceof Supplier) { Supplier<DocWriter> consumer = (Supplier<DocWriter>) chunk; DocWriter writer = consumer.get(); writer.render(buffer); } else { buffer.append(chunk); } }); buffer.append(delegate); delegate.setLength(0); chunks.clear(); }
state.forEach((doc, m) -> { m.forEach((gen, w) -> { String content = postProcess(gen.getName(), w.render()); write(gen, doc, content); });
@Override public Void visitText(TextTree node, Void v) { String body = node.getBody(); Matcher matcher = Helper.LANG_PATTERN.matcher(body); int prev = 0; while (matcher.find()) { writer.append(body, prev, matcher.start()); if (matcher.group(1) != null) { // \$lang writer.append("$lang"); } else { writer.append(generator.getName()); } prev = matcher.end(); } writer.append(body, prev, body.length()); return super.visitText(node, v); }
@Override public Void visitEntity(EntityTree node, Void aVoid) { writer.append(EntityUtils.unescapeEntity(node.getName().toString())); return super.visitEntity(node, aVoid); }
private void copyContent(DocTree node) { int from = (int) docTrees.getSourcePositions().getStartPosition(pkgPath.getCompilationUnit(), docTree, node); int to = (int) docTrees.getSourcePositions().getEndPosition(pkgPath.getCompilationUnit(), docTree, node); writer.append(pkgSource, from, to); }