protected String postProcess(String name, String content) { String processed = applyVariableSubstitution(content); processed = applyPostProcessors(name, processed); return processed; }
@Override public synchronized void init(ProcessingEnvironment processingEnv) { super.init(processingEnv); // Service loader generators if (generators == null) { generators = new ArrayList<>(); Iterator<DocGenerator> it = ServiceLoader.load(DocGenerator.class, DocGenProcessor.class.getClassLoader()).iterator(); while (it.hasNext()) { try { generators.add(it.next()); } catch (Exception e) { e.printStackTrace(); } } } }
try { PackageDoc doc = new PackageDoc((PackageElement) elt); state.put(doc, handleGen(doc)); } catch (DocGenException e) { if (e.element == null) { Map<DocGenerator, DocWriter> m = handleGen(doc); state.put(doc, m); state.forEach((doc, m) -> { m.forEach((gen, w) -> { String content = postProcess(gen.getName(), w.render()); write(gen, doc, content); }); });
protected String resolveLinkToPackageDoc(PackageElement elt) { Document annotation = elt.getAnnotation(Document.class); String fileName = annotation.fileName(); if (fileName.isEmpty()) { return elt.toString() + getExtension(); } else { return fileName; } }
public synchronized BaseProcessor registerPostProcessor(PostProcessor postProcessor) { if (getPostProcessor(postProcessor.getName()) != null) { throw new IllegalArgumentException("Post-processor with name '" + postProcessor.getName() + "' is already " + "registered."); } postProcessors.add(postProcessor); return this; }
protected void write(DocGenerator generator, Doc doc, String content) { String outputOpt = processingEnv.getOptions().get("docgen.output"); if (outputOpt != null) { outputOpt = outputOpt.replace("$lang", generator.getName()); String relativeName = doc.resolveRelativeFileName(generator); try { File dir = new File(outputOpt); for (int i = relativeName.indexOf('/'); i != -1; i = relativeName.indexOf('/', i + 1)) { dir = new File(dir, relativeName.substring(0, i)); relativeName = relativeName.substring(i + 1); } ensureDir(dir); File file = new File(dir, relativeName); try (FileWriter writer = new FileWriter(file)) { writer.write(content); } } catch (IOException e) { e.printStackTrace(); } } }
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; }
try { Symbol.ClassSymbol cs = (Symbol.ClassSymbol) typeElt; if (cs.sourcefile != null && getURL(cs.sourcefile) != null) { URL classURL = getURL(cf); if (classURL != null && classURL.getFile().endsWith(".class")) { URL manifestURL = new URL(classURL.toString().substring(0, classURL.toString().length() - (typeElt.getQualifiedName().toString().length() + 6)) + "META-INF/MANIFEST.MF");
/** * Return the relative file name of a document. * * @param generator the doc generator * @return the relative file name */ public String resolveRelativeFileName(DocGenerator generator) { Document doc = elt.getAnnotation(Document.class); String relativeName = doc.fileName(); if (relativeName.isEmpty()) { relativeName = elt.getQualifiedName() + getExtension(); } return generator.resolveRelativeFileName(elt, relativeName); } }
String name = PostProcessor.getProcessorName(trimmedLine); String[] attributes = PostProcessor.getProcessorAttributes(trimmedLine); PostProcessor postProcessor = getPostProcessor(name); if (postProcessor == null) { processed.append(line);