From d57b4ac61b614b2ab2b635e737c255e03309f545 Mon Sep 17 00:00:00 2001 From: A Pottinger Date: Sun, 13 Oct 2019 13:41:26 -0700 Subject: [PATCH] Removed RewriteParams. Per @benfry goal of reducing class count, rolled RewriteParams into PdeParseTreeListener now that the code rewrite utils are also rolled into PdeParseTreeListener. --- .../java/preproc/PdeParseTreeListener.java | 137 +++------- .../mode/java/preproc/code/RewriteParams.java | 228 ---------------- .../preproc/code/RewriteParamsBuilder.java | 256 ------------------ 3 files changed, 45 insertions(+), 576 deletions(-) delete mode 100644 java/src/processing/mode/java/preproc/code/RewriteParams.java delete mode 100644 java/src/processing/mode/java/preproc/code/RewriteParamsBuilder.java diff --git a/java/src/processing/mode/java/preproc/PdeParseTreeListener.java b/java/src/processing/mode/java/preproc/PdeParseTreeListener.java index a87546c71..8b29f6013 100644 --- a/java/src/processing/mode/java/preproc/PdeParseTreeListener.java +++ b/java/src/processing/mode/java/preproc/PdeParseTreeListener.java @@ -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 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("}"); diff --git a/java/src/processing/mode/java/preproc/code/RewriteParams.java b/java/src/processing/mode/java/preproc/code/RewriteParams.java deleted file mode 100644 index e0d51fb2e..000000000 --- a/java/src/processing/mode/java/preproc/code/RewriteParams.java +++ /dev/null @@ -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 coreImports; - private final List defaultImports; - private final List codeFolderImports; - private final List foundImports; - private final Optional sketchWidth; - private final Optional sketchHeight; - private final Optional 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 newCoreImports, - List newDefaultImports, List newCodeFolderImports, - List newFoundImports, Optional newSketchWidth, - Optional newSketchHeight, Optional 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 getCoreImports() { - return coreImports; - } - - /** - * Get the imports added for user convenience. - * - * @return The set of imports included for user convenience. - */ - public List 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 getCodeFolderImports() { - return codeFolderImports; - } - - /** - * Get the users included by the user. - * - * @return The imports included by the user. - */ - public List 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 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 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 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; - } - -} diff --git a/java/src/processing/mode/java/preproc/code/RewriteParamsBuilder.java b/java/src/processing/mode/java/preproc/code/RewriteParamsBuilder.java deleted file mode 100644 index dd03183b8..000000000 --- a/java/src/processing/mode/java/preproc/code/RewriteParamsBuilder.java +++ /dev/null @@ -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 sketchName; - private Optional isTesting; - private Optional rewriter; - private Optional mode; - private Optional foundMain; - private Optional lineOffset; - private Optional sketchWidth; - private Optional sketchHeight; - private Optional sketchRenderer; - private Optional isSizeValidInGlobal; - private Optional isSizeFullscreen; - - private ArrayList coreImports; - private ArrayList defaultImports; - private ArrayList codeFolderImports; - private ArrayList 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 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 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 newImports) { - codeFolderImports.addAll(newImports); - } - - /** - * Add imports included manually by the user. - * - * @param newImports The imports included by the user. - */ - public void addFoundImports(Collection 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() - ); - } -}