mirror of
https://github.com/processing/processing4.git
synced 2026-01-30 11:51:54 +01:00
Removed RewriteParams.
Per @benfry goal of reducing class count, rolled RewriteParams into PdeParseTreeListener now that the code rewrite utils are also rolled into PdeParseTreeListener.
This commit is contained in:
@@ -261,10 +261,8 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* @param ctx The context from ANTLR for the processing sketch.
|
||||
*/
|
||||
public void exitProcessingSketch(ProcessingParser.ProcessingSketchContext ctx) {
|
||||
RewriteParams rewriteParams = createRewriteParams();
|
||||
|
||||
// header
|
||||
headerResult = prepareHeader(rewriter, rewriteParams);
|
||||
headerResult = prepareHeader(rewriter);
|
||||
lineOffset = headerResult.getLineOffset();
|
||||
|
||||
// footer
|
||||
@@ -272,7 +270,7 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
int tokens = tokenStream.size();
|
||||
int length = tokenStream.get(tokens-1).getStopIndex();
|
||||
|
||||
footerResult = prepareFooter(rewriter, rewriteParams, length);
|
||||
footerResult = prepareFooter(rewriter, length);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -708,34 +706,6 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
edits.add(createDelete(location, rewriter));
|
||||
}
|
||||
|
||||
/**
|
||||
* Create parameters required by the RewriterCodeGenerator.
|
||||
*
|
||||
* @return Newly created rewrite params.
|
||||
*/
|
||||
protected RewriteParams createRewriteParams() {
|
||||
RewriteParamsBuilder builder = new RewriteParamsBuilder(VERSION_STR);
|
||||
|
||||
builder.setSketchName(sketchName);
|
||||
builder.setisTesting(isTesting);
|
||||
builder.setRewriter(rewriter);
|
||||
builder.setMode(mode);
|
||||
builder.setFoundMain(foundMain);
|
||||
builder.setLineOffset(lineOffset);
|
||||
builder.setSketchWidth(sketchWidth);
|
||||
builder.setSketchHeight(sketchHeight);
|
||||
builder.setSketchRenderer(sketchRenderer);
|
||||
builder.setIsSizeValidInGlobal(sizeRequiresRewrite);
|
||||
builder.setIsSizeFullscreen(sizeIsFullscreen);
|
||||
|
||||
builder.addCoreImports(coreImports);
|
||||
builder.addDefaultImports(defaultImports);
|
||||
builder.addCodeFolderImports(codeFolderImports);
|
||||
builder.addFoundImports(foundImports);
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
/*
|
||||
* =========================================
|
||||
* === Code generation utility functions ===
|
||||
@@ -747,10 +717,9 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* definition.
|
||||
*
|
||||
* @param headerWriter The writer into which the header should be written.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @return Information about the completed rewrite.
|
||||
*/
|
||||
protected RewriteResult prepareHeader(TokenStreamRewriter headerWriter, RewriteParams params) {
|
||||
protected RewriteResult prepareHeader(TokenStreamRewriter headerWriter) {
|
||||
|
||||
RewriteResultBuilder resultBuilder = new RewriteResultBuilder();
|
||||
|
||||
@@ -761,7 +730,7 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
true
|
||||
);
|
||||
|
||||
writeHeaderContents(decoratedWriter, params, resultBuilder);
|
||||
writeHeaderContents(decoratedWriter, resultBuilder);
|
||||
|
||||
decoratedWriter.finish();
|
||||
|
||||
@@ -772,12 +741,10 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* Prepare the footer for a sketch (finishes the constructs introduced in header like class def).
|
||||
*
|
||||
* @param footerWriter The writer through which the footer should be introduced.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param insertPoint The loction at which the footer should be written.
|
||||
* @return Information about the completed rewrite.
|
||||
*/
|
||||
protected RewriteResult prepareFooter(TokenStreamRewriter footerWriter, RewriteParams params,
|
||||
int insertPoint) {
|
||||
protected RewriteResult prepareFooter(TokenStreamRewriter footerWriter, int insertPoint) {
|
||||
|
||||
RewriteResultBuilder resultBuilder = new RewriteResultBuilder();
|
||||
|
||||
@@ -788,7 +755,7 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
false
|
||||
);
|
||||
|
||||
writeFooterContents(decoratedWriter, params, resultBuilder);
|
||||
writeFooterContents(decoratedWriter, resultBuilder);
|
||||
|
||||
decoratedWriter.finish();
|
||||
|
||||
@@ -799,14 +766,13 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* Write the contents of the header using a prebuilt print writer.
|
||||
*
|
||||
* @param decoratedWriter he writer though which the comment should be introduced.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writeHeaderContents(PrintWriterWithEditGen decoratedWriter, RewriteParams params,
|
||||
protected void writeHeaderContents(PrintWriterWithEditGen decoratedWriter,
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
if (!params.getIsTesting()) {
|
||||
writePreprocessorComment(decoratedWriter, params, resultBuilder);
|
||||
if (!isTesting) {
|
||||
writePreprocessorComment(decoratedWriter, resultBuilder);
|
||||
}
|
||||
|
||||
if (destinationPackageName.isPresent()) {
|
||||
@@ -814,9 +780,7 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
decoratedWriter.addEmptyLine();
|
||||
}
|
||||
|
||||
writeImports(decoratedWriter, params, resultBuilder);
|
||||
|
||||
PdePreprocessor.Mode mode = params.getMode();
|
||||
writeImports(decoratedWriter, resultBuilder);
|
||||
|
||||
boolean requiresClassHeader = mode == PdePreprocessor.Mode.STATIC;
|
||||
requiresClassHeader = requiresClassHeader || mode == PdePreprocessor.Mode.ACTIVE;
|
||||
@@ -824,11 +788,11 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
boolean requiresStaticSketchHeader = mode == PdePreprocessor.Mode.STATIC;
|
||||
|
||||
if (requiresClassHeader) {
|
||||
writeClassHeader(decoratedWriter, params, resultBuilder);
|
||||
writeClassHeader(decoratedWriter, resultBuilder);
|
||||
}
|
||||
|
||||
if (requiresStaticSketchHeader) {
|
||||
writeStaticSketchHeader(decoratedWriter, params, resultBuilder);
|
||||
writeStaticSketchHeader(decoratedWriter, resultBuilder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -836,28 +800,27 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* Write the contents of the footer using a prebuilt print writer.
|
||||
*
|
||||
* @param decoratedWriter he writer though which the comment should be introduced.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writeFooterContents(PrintWriterWithEditGen decoratedWriter, RewriteParams params,
|
||||
protected void writeFooterContents(PrintWriterWithEditGen decoratedWriter,
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
decoratedWriter.addEmptyLine();
|
||||
|
||||
PdePreprocessor.Mode mode = params.getMode();
|
||||
|
||||
boolean requiresStaticSketchFooter = mode == PdePreprocessor.Mode.STATIC;
|
||||
boolean requiresClassWrap = mode == PdePreprocessor.Mode.STATIC;
|
||||
requiresClassWrap = requiresClassWrap || mode == PdePreprocessor.Mode.ACTIVE;
|
||||
|
||||
if (requiresStaticSketchFooter) {
|
||||
writeStaticSketchFooter(decoratedWriter, params, resultBuilder);
|
||||
writeStaticSketchFooter(decoratedWriter, resultBuilder);
|
||||
}
|
||||
|
||||
if (requiresClassWrap) {
|
||||
writeExtraFieldsAndMethods(decoratedWriter, params, resultBuilder);
|
||||
if (!params.getFoundMain()) writeMain(decoratedWriter, params, resultBuilder);
|
||||
writeClassFooter(decoratedWriter, params, resultBuilder);
|
||||
writeExtraFieldsAndMethods(decoratedWriter, resultBuilder);
|
||||
if (!foundMain) {
|
||||
writeMain(decoratedWriter, resultBuilder);
|
||||
}
|
||||
writeClassFooter(decoratedWriter, resultBuilder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -865,17 +828,16 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* Comment out sketch code before it is moved elsewhere in resulting Java.
|
||||
*
|
||||
* @param headerWriter The writer though which the comment should be introduced.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writePreprocessorComment(PrintWriterWithEditGen headerWriter, RewriteParams params,
|
||||
protected void writePreprocessorComment(PrintWriterWithEditGen headerWriter,
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
String dateStr = new SimpleDateFormat("YYYY-MM-dd").format(new Date());
|
||||
|
||||
String newCode = String.format(
|
||||
"/* autogenerated by Processing preprocessor v%s on %s */",
|
||||
params.getVersion(),
|
||||
VERSION_STR,
|
||||
dateStr
|
||||
);
|
||||
|
||||
@@ -886,16 +848,15 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* Add imports as part of conversion from processing sketch to Java code.
|
||||
*
|
||||
* @param headerWriter The writer though which the imports should be introduced.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writeImports(PrintWriterWithEditGen headerWriter, RewriteParams params,
|
||||
protected void writeImports(PrintWriterWithEditGen headerWriter,
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
writeImportList(headerWriter, params.getCoreImports(), params, resultBuilder);
|
||||
writeImportList(headerWriter, params.getCodeFolderImports(), params, resultBuilder);
|
||||
writeImportList(headerWriter, params.getFoundImports(), params, resultBuilder);
|
||||
writeImportList(headerWriter, params.getDefaultImports(), params, resultBuilder);
|
||||
writeImportList(headerWriter, coreImports, resultBuilder);
|
||||
writeImportList(headerWriter, codeFolderImports, resultBuilder);
|
||||
writeImportList(headerWriter, foundImports, resultBuilder);
|
||||
writeImportList(headerWriter, defaultImports, resultBuilder);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -903,13 +864,12 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
*
|
||||
* @param headerWriter The writer though which the imports should be introduced.
|
||||
* @param imports Collection of imports to introduce.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writeImportList(PrintWriterWithEditGen headerWriter, List<String> imports,
|
||||
RewriteParams params, RewriteResultBuilder resultBuilder) {
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
writeImportList(headerWriter, imports.toArray(new String[0]), params, resultBuilder);
|
||||
writeImportList(headerWriter, imports.toArray(new String[0]), resultBuilder);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -917,11 +877,10 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
*
|
||||
* @param headerWriter The writer though which the imports should be introduced.
|
||||
* @param imports Collection of imports to introduce.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writeImportList(PrintWriterWithEditGen headerWriter, String[] imports,
|
||||
RewriteParams params, RewriteResultBuilder resultBuilder) {
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
for (String importDecl : imports) {
|
||||
headerWriter.addCodeLine("import " + importDecl + ";");
|
||||
@@ -935,13 +894,12 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* Write the prefix which defines the enclosing class for the sketch.
|
||||
*
|
||||
* @param headerWriter The writer through which the header should be introduced.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writeClassHeader(PrintWriterWithEditGen headerWriter, RewriteParams params,
|
||||
protected void writeClassHeader(PrintWriterWithEditGen headerWriter,
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
headerWriter.addCodeLine("public class " + params.getSketchName() + " extends PApplet {");
|
||||
headerWriter.addCodeLine("public class " + sketchName + " extends PApplet {");
|
||||
|
||||
headerWriter.addEmptyLine();
|
||||
}
|
||||
@@ -950,10 +908,9 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* Write the header for a static sketch (no methods).
|
||||
*
|
||||
* @param headerWriter The writer through which the header should be introduced.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writeStaticSketchHeader(PrintWriterWithEditGen headerWriter, RewriteParams params,
|
||||
protected void writeStaticSketchHeader(PrintWriterWithEditGen headerWriter,
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
headerWriter.addCodeLine(indent1 + "public void setup() {");
|
||||
@@ -963,10 +920,9 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* Write the bottom of the sketch code for static mode.
|
||||
*
|
||||
* @param footerWriter The footer into which the text should be written.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writeStaticSketchFooter(PrintWriterWithEditGen footerWriter, RewriteParams params,
|
||||
protected void writeStaticSketchFooter(PrintWriterWithEditGen footerWriter,
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
footerWriter.addCodeLine(indent2 + "noLoop();");
|
||||
@@ -978,34 +934,33 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
*
|
||||
* @param classBodyWriter The writer into which the code should be written. Should be for class
|
||||
* body.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writeExtraFieldsAndMethods(PrintWriterWithEditGen classBodyWriter,
|
||||
RewriteParams params, RewriteResultBuilder resultBuilder) {
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
if (!params.getIsSizeValidInGlobal()) {
|
||||
if (!sizeRequiresRewrite) {
|
||||
return;
|
||||
}
|
||||
|
||||
String settingsOuterTemplate = indent1 + "public void settings() { %s }";
|
||||
|
||||
String settingsInner;
|
||||
if (params.getIsSizeFullscreen()) {
|
||||
String fullscreenInner = params.getSketchRenderer().orElse("");
|
||||
if (sizeIsFullscreen) {
|
||||
String fullscreenInner = sketchRenderer == null ? "" : sketchRenderer;
|
||||
settingsInner = String.format("fullScreen(%s);", fullscreenInner);
|
||||
} else {
|
||||
|
||||
if (params.getSketchWidth().isEmpty() || params.getSketchHeight().isEmpty()) {
|
||||
if (sketchWidth.isEmpty() || sketchHeight.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
|
||||
StringJoiner argJoiner = new StringJoiner(",");
|
||||
argJoiner.add(params.getSketchWidth().get());
|
||||
argJoiner.add(params.getSketchHeight().get());
|
||||
argJoiner.add(sketchWidth);
|
||||
argJoiner.add(sketchHeight);
|
||||
|
||||
if (params.getSketchRenderer().isPresent()) {
|
||||
argJoiner.add(params.getSketchRenderer().get());
|
||||
if (sketchRenderer != null) {
|
||||
argJoiner.add(sketchRenderer);
|
||||
}
|
||||
|
||||
settingsInner = String.format("size(%s);", argJoiner.toString());
|
||||
@@ -1022,10 +977,9 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* Write the main method.
|
||||
*
|
||||
* @param footerWriter The writer into which the footer should be written.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writeMain(PrintWriterWithEditGen footerWriter, RewriteParams params,
|
||||
protected void writeMain(PrintWriterWithEditGen footerWriter,
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
footerWriter.addEmptyLine();
|
||||
@@ -1046,7 +1000,7 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
footerWriter.addCode("\"" + PApplet.ARGS_HIDE_STOP + "\", ");
|
||||
}
|
||||
}
|
||||
footerWriter.addCode("\"" + params.getSketchName() + "\"");
|
||||
footerWriter.addCode("\"" + sketchName + "\"");
|
||||
}
|
||||
|
||||
footerWriter.addCodeLine(" };");
|
||||
@@ -1063,10 +1017,9 @@ public class PdeParseTreeListener extends ProcessingBaseListener {
|
||||
* Write the end of the class body for the footer.
|
||||
*
|
||||
* @param footerWriter The writer into which the footer should be written.
|
||||
* @param params The parameters for the rewrite.
|
||||
* @param resultBuilder Builder for reporting out results to the caller.
|
||||
*/
|
||||
protected void writeClassFooter(PrintWriterWithEditGen footerWriter, RewriteParams params,
|
||||
protected void writeClassFooter(PrintWriterWithEditGen footerWriter,
|
||||
RewriteResultBuilder resultBuilder) {
|
||||
|
||||
footerWriter.addCodeLine("}");
|
||||
|
||||
@@ -1,228 +0,0 @@
|
||||
package processing.mode.java.preproc.code;
|
||||
|
||||
import org.antlr.v4.runtime.TokenStreamRewriter;
|
||||
import processing.mode.java.preproc.PdePreprocessor;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
/**
|
||||
* Set of parameters required for re-writing as part of sketch preprocessing.
|
||||
*/
|
||||
public class RewriteParams {
|
||||
|
||||
private final String version;
|
||||
private final String sketchName;
|
||||
private final boolean isTesting;
|
||||
private final TokenStreamRewriter rewriter;
|
||||
private final PdePreprocessor.Mode mode;
|
||||
private final boolean foundMain;
|
||||
private final int lineOffset;
|
||||
private final List<String> coreImports;
|
||||
private final List<String> defaultImports;
|
||||
private final List<String> codeFolderImports;
|
||||
private final List<String> foundImports;
|
||||
private final Optional<String> sketchWidth;
|
||||
private final Optional<String> sketchHeight;
|
||||
private final Optional<String> sketchRenderer;
|
||||
private final boolean isSizeValidInGlobal;
|
||||
private final boolean isSizeFullscreen;
|
||||
|
||||
/**
|
||||
* Create a new set of parameters.
|
||||
*
|
||||
* @param newVersion The version of the preprocessor.
|
||||
* @param newSketchName The name of the sketch.
|
||||
* @param newisTesting Flag indicating if this is being run as part of automated testing.
|
||||
* @param newRewriter The rewriter into which edits should be made.
|
||||
* @param newMode The mode (like STATIC) in which processing is being run.
|
||||
* @param newFoundMain Flag indicating if a user-provided main method was found in preprocessing.
|
||||
* @param newLineOffset The line offset of the preprocessor prior to rewrite.
|
||||
* @param newCoreImports The set of imports to include that are required for processing.
|
||||
* @param newDefaultImports The set of imports included for user convenience.
|
||||
* @param newCodeFolderImports The imports required to include other code in the code folder.
|
||||
* @param newFoundImports The imports included by the user.
|
||||
* @param newSketchWidth The width of the sketch or code used to generate it. If not included,
|
||||
* call to size will not be made.
|
||||
* @param newSketchHeight The height of the sketch or code used to generate it. If not included,
|
||||
* call to size will not be made.
|
||||
* @param newSketchRenderer The renderer like P2D.
|
||||
* @param newIsSizeValidInGlobal Flag indicating if a call to size is valid when that call to size
|
||||
* is made from sketch global context.
|
||||
* @param newSizeIsFullscreen Indicate if in fullscreen mode.
|
||||
*/
|
||||
public RewriteParams(String newVersion, String newSketchName, boolean newisTesting,
|
||||
TokenStreamRewriter newRewriter, PdePreprocessor.Mode newMode,
|
||||
boolean newFoundMain, int newLineOffset, List<String> newCoreImports,
|
||||
List<String> newDefaultImports, List<String> newCodeFolderImports,
|
||||
List<String> newFoundImports, Optional<String> newSketchWidth,
|
||||
Optional<String> newSketchHeight, Optional<String> newSketchRenderer,
|
||||
boolean newIsSizeValidInGlobal, boolean newSizeIsFullscreen) {
|
||||
|
||||
version = newVersion;
|
||||
sketchName = newSketchName;
|
||||
isTesting = newisTesting;
|
||||
rewriter = newRewriter;
|
||||
mode = newMode;
|
||||
foundMain = newFoundMain;
|
||||
lineOffset = newLineOffset;
|
||||
coreImports = newCoreImports;
|
||||
defaultImports = newDefaultImports;
|
||||
codeFolderImports = newCodeFolderImports;
|
||||
foundImports = newFoundImports;
|
||||
sketchWidth = newSketchWidth;
|
||||
sketchHeight = newSketchHeight;
|
||||
sketchRenderer = newSketchRenderer;
|
||||
isSizeValidInGlobal = newIsSizeValidInGlobal;
|
||||
isSizeFullscreen = newSizeIsFullscreen;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the version of the preprocessor.
|
||||
*
|
||||
* @return The version of the preprocessor.
|
||||
*/
|
||||
public String getVersion() {
|
||||
return version;
|
||||
}
|
||||
|
||||
/**
|
||||
* The user provided or automated name of the sketch.
|
||||
*
|
||||
* @return The name of the sketch.
|
||||
*/
|
||||
public String getSketchName() {
|
||||
return sketchName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if this code is being exercised in automated test.
|
||||
*
|
||||
* @return Flag indicating if this is being run as part of automated testing.
|
||||
*/
|
||||
public boolean getIsTesting() {
|
||||
return isTesting;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the rewriter to be used in rewriting.
|
||||
*
|
||||
* @return The rewriter into which edits should be made.
|
||||
*/
|
||||
public TokenStreamRewriter getRewriter() {
|
||||
return rewriter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the mode in which processing is being run.
|
||||
*
|
||||
* @return The mode (like STATIC) in which processing is being run.
|
||||
*/
|
||||
public PdePreprocessor.Mode getMode() {
|
||||
return mode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if the user provided their own main method.
|
||||
*
|
||||
* @return Flag indicating if a user-provided main method was found in preprocessing.
|
||||
*/
|
||||
public boolean getFoundMain() {
|
||||
return foundMain;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine the line offset of the preprocessor prior to rewrite.
|
||||
*
|
||||
* @return The line offset of the preprocessor prior to rewrite.
|
||||
*/
|
||||
public int getLineOffset() {
|
||||
return lineOffset;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get imports required for processing.
|
||||
*
|
||||
* @return The set of imports to include that are required for processing.
|
||||
*/
|
||||
public List<String> getCoreImports() {
|
||||
return coreImports;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the imports added for user convenience.
|
||||
*
|
||||
* @return The set of imports included for user convenience.
|
||||
*/
|
||||
public List<String> getDefaultImports() {
|
||||
return defaultImports;
|
||||
}
|
||||
|
||||
/**
|
||||
* The imports required to access other code in the code folder.
|
||||
*
|
||||
* @return The imports required to include other code in the code folder.
|
||||
*/
|
||||
public List<String> getCodeFolderImports() {
|
||||
return codeFolderImports;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the users included by the user.
|
||||
*
|
||||
* @return The imports included by the user.
|
||||
*/
|
||||
public List<String> getFoundImports() {
|
||||
return foundImports;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the code used to determine sketch width if given.
|
||||
*
|
||||
* @return The width of the sketch or code used to generate it. If not included, call to size will
|
||||
* not be made. Not included means it is an empty optional.
|
||||
*/
|
||||
public Optional<String> getSketchWidth() {
|
||||
return sketchWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the code used to determine sketch height if given.
|
||||
*
|
||||
* @return The height of the sketch or code used to generate it. If not included, call to size
|
||||
* will not be made. Not included means it is an empty optional.
|
||||
*/
|
||||
public Optional<String> getSketchHeight() {
|
||||
return sketchHeight;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the user provided renderer or an empty optional if user has not provided renderer.
|
||||
*
|
||||
* @return The renderer like P2D if given.
|
||||
*/
|
||||
public Optional<String> getSketchRenderer() {
|
||||
return sketchRenderer;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if a call to size has been made in sketch global context.
|
||||
*
|
||||
* @return Flag indicating if a call to size is valid when that call to size is made from sketch
|
||||
* global context.
|
||||
*/
|
||||
public boolean getIsSizeValidInGlobal() {
|
||||
return isSizeValidInGlobal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if running in fullscreen.
|
||||
*
|
||||
* @return Flag indicating if in running in fullscreen.
|
||||
*/
|
||||
public boolean getIsSizeFullscreen() {
|
||||
return isSizeFullscreen;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,256 +0,0 @@
|
||||
package processing.mode.java.preproc.code;
|
||||
|
||||
import org.antlr.v4.runtime.TokenStreamRewriter;
|
||||
import processing.mode.java.preproc.PdePreprocessor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
/**
|
||||
* Builder to help generate a {RewriteParams}.
|
||||
*/
|
||||
public class RewriteParamsBuilder {
|
||||
|
||||
private final String version;
|
||||
|
||||
private Optional<String> sketchName;
|
||||
private Optional<Boolean> isTesting;
|
||||
private Optional<TokenStreamRewriter> rewriter;
|
||||
private Optional<PdePreprocessor.Mode> mode;
|
||||
private Optional<Boolean> foundMain;
|
||||
private Optional<Integer> lineOffset;
|
||||
private Optional<String> sketchWidth;
|
||||
private Optional<String> sketchHeight;
|
||||
private Optional<String> sketchRenderer;
|
||||
private Optional<Boolean> isSizeValidInGlobal;
|
||||
private Optional<Boolean> isSizeFullscreen;
|
||||
|
||||
private ArrayList<String> coreImports;
|
||||
private ArrayList<String> defaultImports;
|
||||
private ArrayList<String> codeFolderImports;
|
||||
private ArrayList<String> foundImports;
|
||||
|
||||
/**
|
||||
* Create a new params build.
|
||||
*
|
||||
* @param newVersion The version to include in generated RewriteParams.
|
||||
*/
|
||||
public RewriteParamsBuilder(String newVersion) {
|
||||
version = newVersion;
|
||||
|
||||
coreImports = new ArrayList<>();
|
||||
defaultImports = new ArrayList<>();
|
||||
codeFolderImports = new ArrayList<>();
|
||||
foundImports = new ArrayList<>();
|
||||
|
||||
sketchName = Optional.empty();
|
||||
isTesting = Optional.empty();
|
||||
rewriter = Optional.empty();
|
||||
mode = Optional.empty();
|
||||
foundMain = Optional.empty();
|
||||
lineOffset = Optional.empty();
|
||||
sketchWidth = Optional.empty();
|
||||
sketchHeight = Optional.empty();
|
||||
sketchRenderer = Optional.empty();
|
||||
isSizeValidInGlobal = Optional.empty();
|
||||
isSizeFullscreen = Optional.empty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify the name of the sketch.
|
||||
*
|
||||
* @param newSketchName The name of the sketch.
|
||||
*/
|
||||
public void setSketchName(String newSketchName) {
|
||||
sketchName = Optional.ofNullable(newSketchName);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify if this is being run as part of automated testing.
|
||||
*
|
||||
* @param newisTesting Flag indicating if this is being run as part of automated testing.
|
||||
*/
|
||||
public void setisTesting(boolean newisTesting) {
|
||||
isTesting = Optional.of(newisTesting);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify rewriter into which edits should be made.
|
||||
*
|
||||
* @param newRewriter The rewriter into which edits should be made.
|
||||
*/
|
||||
public void setRewriter(TokenStreamRewriter newRewriter) {
|
||||
rewriter = Optional.ofNullable(newRewriter);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify mode (like STATIC) in which processing is being run.
|
||||
*
|
||||
* @param newMode The mode (like STATIC) in which processing is being run.
|
||||
*/
|
||||
public void setMode(PdePreprocessor.Mode newMode) {
|
||||
mode = Optional.ofNullable(newMode);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify if a user-provided main method was found in preprocessing.
|
||||
*
|
||||
* @param newFoundMain Flag indicating if a user-provided main method was found in preprocessing.
|
||||
*/
|
||||
public void setFoundMain(boolean newFoundMain) {
|
||||
foundMain = Optional.of(newFoundMain);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify line offset of the preprocessor prior to rewrite.
|
||||
*
|
||||
* @param newLineOffset The line offset of the preprocessor prior to rewrite.
|
||||
*/
|
||||
public void setLineOffset(int newLineOffset) {
|
||||
lineOffset = Optional.of(newLineOffset);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify width of the sketch.
|
||||
*
|
||||
* @param newSketchWidth The width of the sketch or code used to generate it. If not included,
|
||||
* call to size will not be made.
|
||||
*/
|
||||
public void setSketchWidth(String newSketchWidth) {
|
||||
sketchWidth = Optional.ofNullable(newSketchWidth);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify height of the sketch.
|
||||
*
|
||||
* @param newSketchHeight The height of the sketch or code used to generate it. If not included,
|
||||
* call to size will not be made.
|
||||
*/
|
||||
public void setSketchHeight(String newSketchHeight) {
|
||||
sketchHeight = Optional.ofNullable(newSketchHeight);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify renderer like P2D.
|
||||
*
|
||||
* @param newSketchRenderer The renderer like P2D.
|
||||
*/
|
||||
public void setSketchRenderer(String newSketchRenderer) {
|
||||
sketchRenderer = Optional.ofNullable(newSketchRenderer);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify if the user made a valid call to size in sketch global context.
|
||||
*
|
||||
* @param newIsSizeValidInGlobal Flag indicating if a call to size is valid when that call to size
|
||||
* is made from sketch global context.
|
||||
*/
|
||||
public void setIsSizeValidInGlobal(boolean newIsSizeValidInGlobal) {
|
||||
isSizeValidInGlobal = Optional.of(newIsSizeValidInGlobal);
|
||||
}
|
||||
|
||||
/**
|
||||
* Specify if running in fullscreen.
|
||||
*
|
||||
* @param newIsSizeFullscreen Flag indicating if running in fullscreen.
|
||||
*/
|
||||
public void setIsSizeFullscreen(boolean newIsSizeFullscreen) {
|
||||
isSizeFullscreen = Optional.of(newIsSizeFullscreen);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add imports required for processing to function.
|
||||
*
|
||||
* @param newImports The set of imports to include that are required for processing.
|
||||
*/
|
||||
public void addCoreImports(Collection<String> newImports) {
|
||||
coreImports.addAll(newImports);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add imports that are included ahead of time for the user.
|
||||
*
|
||||
* @param newImports The set of imports included for user convenience.
|
||||
*/
|
||||
public void addDefaultImports(Collection<String> newImports) {
|
||||
defaultImports.addAll(newImports);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add imports required for the sketch to reach code in its own code folder.
|
||||
*
|
||||
* @param newImports The imports required to include other code in the code folder.
|
||||
*/
|
||||
public void addCodeFolderImports(Collection<String> newImports) {
|
||||
codeFolderImports.addAll(newImports);
|
||||
}
|
||||
|
||||
/**
|
||||
* Add imports included manually by the user.
|
||||
*
|
||||
* @param newImports The imports included by the user.
|
||||
*/
|
||||
public void addFoundImports(Collection<String> newImports) {
|
||||
foundImports.addAll(newImports);
|
||||
}
|
||||
|
||||
/**
|
||||
* Build a new set of rewrite parameters.
|
||||
*
|
||||
* @return Parameters required to execute {RewriterCodeGenerator};
|
||||
*/
|
||||
public RewriteParams build() {
|
||||
if (sketchName.isEmpty()) {
|
||||
throw new RuntimeException("Expected sketchName to be set");
|
||||
}
|
||||
|
||||
if (isTesting.isEmpty()) {
|
||||
throw new RuntimeException("Expected isTesting to be set");
|
||||
}
|
||||
|
||||
if (rewriter.isEmpty()) {
|
||||
throw new RuntimeException("Expected rewriter to be set");
|
||||
}
|
||||
|
||||
if (mode.isEmpty()) {
|
||||
throw new RuntimeException("Expected mode to be set");
|
||||
}
|
||||
|
||||
if (foundMain.isEmpty()) {
|
||||
throw new RuntimeException("Expected foundMain to be set");
|
||||
}
|
||||
|
||||
if (lineOffset.isEmpty()) {
|
||||
throw new RuntimeException("Expected lineOffset to be set");
|
||||
}
|
||||
|
||||
if (isSizeValidInGlobal.isEmpty()) {
|
||||
throw new RuntimeException("Expected isSizeValidInGlobal to be set");
|
||||
}
|
||||
|
||||
if (isSizeFullscreen.isEmpty()) {
|
||||
throw new RuntimeException("Expected isSizeFullscreen to be set");
|
||||
}
|
||||
|
||||
return new RewriteParams(
|
||||
version,
|
||||
sketchName.get(),
|
||||
isTesting.get(),
|
||||
rewriter.get(),
|
||||
mode.get(),
|
||||
foundMain.get(),
|
||||
lineOffset.get(),
|
||||
coreImports,
|
||||
defaultImports,
|
||||
codeFolderImports,
|
||||
foundImports,
|
||||
sketchWidth,
|
||||
sketchHeight,
|
||||
sketchRenderer,
|
||||
isSizeValidInGlobal.get(),
|
||||
isSizeFullscreen.get()
|
||||
);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user