Files
processing4/doclet/ReferenceGenerator/src/writers/Shared.java
2020-09-10 17:36:12 +02:00

202 lines
4.5 KiB
Java

package writers;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import org.w3c.dom.Document;
import com.sun.javadoc.Doc;
import com.sun.javadoc.ProgramElementDoc;
public class Shared {
// what we're looking for
private static Shared instance;
private String webrefTagName = "webref";
private String seeAlsoTagName = "see_external";
private String coreClassName = "PApplet";
private ArrayList<String> descriptionSets;
//where things go
private String outputDirectory = "web_reference";
private String localOutputDirectory = "local_reference";
private String imageDirectory = "images";
private String fileExtension = ".html";
//where things come from
private String templateDirectory = "templates";
private String exampleDirectory = "web_examples";
private String includeDirectory = "include";
private String jsonDirectory ="../../../processing-website/content/references/translations/en/processing/";
boolean noisy = false;
public ArrayList<String> corePackages;
public ArrayList<String> rootClasses;
private Shared(){
corePackages = new ArrayList<String>();
rootClasses = new ArrayList<String>();
descriptionSets = new ArrayList<String>();
addDescriptionTag("description");
}
public static Shared i()
{
if(instance == null)
{
instance = new Shared();
}
return instance;
}
public String getWebrefTagName(){
return webrefTagName;
}
public String getSeeAlsoTagName()
{
return seeAlsoTagName;
}
public void setIncludeDirectory( String s )
{
includeDirectory = s;
}
public String getIncludeDirectory()
{
return includeDirectory + "/";
}
public void setWebrefTagName(String webrefTagName)
{
this.webrefTagName = webrefTagName;
}
public void setCoreClassName(String coreClassName)
{
this.coreClassName = coreClassName;
}
public String getCoreClassName()
{
return coreClassName;
}
public void addDescriptionTag(String s) {
System.out.println( "Added description tag: " + s );
descriptionSets.add( "/root/"+s );
descriptionSets.add( "/root/js_mode/"+s );
}
public ArrayList<String> getDescriptionSets() {
return descriptionSets;
}
public void setOutputDirectory(String outputDirectory) {
this.outputDirectory = outputDirectory;
}
public String getOutputDirectory() {
return outputDirectory;
}
public void setFileExtension(String fileExtension) {
this.fileExtension = fileExtension;
}
public String getFileExtension() {
return fileExtension;
}
public void setTemplateDirectory(String templateDirectory) {
this.templateDirectory = templateDirectory;
}
public String getTemplateDirectory() {
return templateDirectory;
}
public String TEMPLATE_DIRECTORY(){
return templateDirectory + "/";
}
public void setExampleDirectory(String exampleDirectory) {
this.exampleDirectory = exampleDirectory;
}
public String getExampleDirectory() {
return exampleDirectory;
}
public String getJSONDirectory(){
return jsonDirectory + "/";
}
public void setImageDirectory(String imageDirectory) {
this.imageDirectory = imageDirectory;
}
public String getImageDirectory(){
return imageDirectory + "/";
}
public void setLocalOutputDirectory(String localOutputDirectory) {
this.localOutputDirectory = localOutputDirectory;
}
public String getLocalOutputDirectory()
{
return localOutputDirectory + "/";
}
public String OUTPUT_DIRECTORY()
{
return outputDirectory + "/";
}
public boolean isCore(ProgramElementDoc doc){
return corePackages.contains(doc.containingPackage().name());
}
public boolean isWebref(ProgramElementDoc doc){
return doc.tags(webrefTagName).length > 0;
}
public boolean isRootLevel(ProgramElementDoc doc){
if(doc.isClass() || doc.isInterface()){
return rootClasses.contains(doc.name());
} else {
return rootClasses.contains(doc.containingClass().name());
}
}
public boolean isNoisy(){
return noisy;
}
public void setNoisy(boolean b){
noisy = b;
}
public void createOutputDirectory(String dir){
System.out.println("Creating output directory: " + dir );
File f = new File(getLocalOutputDirectory() + dir);
f.mkdirs();
f = new File(OUTPUT_DIRECTORY() + dir);
f.mkdirs();
}
public void createBaseDirectories(){
File f = new File(getLocalOutputDirectory());
f.mkdirs();
f = new File(OUTPUT_DIRECTORY());
f.mkdirs();
}
public boolean shouldOmit(Doc doc){
if( doc.tags("nowebref").length > 0 )
{
return true;
}
if( doc.tags("notWebref").length > 0 )
{
return true;
}
// if none found, we should include
return false;
}
}