use of org.develnext.jphp.genapi.description.ClassDescription in project jphp by jphp-compiler.
the class ApiDocument method generate.
public void generate(File targetDirectory, String language, Map<String, ClassDescription> classMap) {
for (ClassStmtToken el : classes) {
ClassDescription cls = classMap.get(el.getFulledName().toLowerCase());
if (cls == null)
throw new IllegalStateException("Cannot find class " + el.getFulledName() + " in classMap");
System.out.println("[" + language + "] gen class: " + cls.getName());
String result = template.printClass(cls);
File file = new File(targetDirectory, cls.getName().replace('\\', '/') + ".rst");
if (!file.getParentFile().exists()) {
if (!file.getParentFile().mkdirs()) {
throw new IllegalStateException("Cannot create the '" + file.getParent() + "' directory");
}
}
try {
FileWriter fileWriter = new FileWriter(file, false);
try {
fileWriter.write(result);
} finally {
fileWriter.close();
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
template.onEnd(targetDirectory);
}
use of org.develnext.jphp.genapi.description.ClassDescription in project jphp by jphp-compiler.
the class DocGenerator method generate.
public void generate(File targetDirectory, String language) {
if (!targetDirectory.exists())
if (!targetDirectory.mkdirs())
throw new IllegalStateException("Cannot create target directory");
SphinxTemplate sphinxTemplate = new SphinxTemplate(language, languages.get(language));
List<ApiDocument> documents = new ArrayList<ApiDocument>();
for (File file : files) {
ApiDocument document = new ApiDocument(parseFile(file), sphinxTemplate);
documents.add(document);
}
Map<String, ClassDescription> classMap = new HashedMap<String, ClassDescription>();
for (ApiDocument document : documents) {
classMap.putAll(document.getClasses());
}
for (ClassDescription el : classMap.values()) {
if (el.getExtends() != null) {
ClassDescription parent = classMap.get(el.getExtends().toLowerCase());
if (parent != null) {
parent.addChildClass(el);
}
}
}
for (ApiDocument document : documents) {
document.generate(targetDirectory, language, classMap);
}
}
Aggregations