You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2022/10/05 20:19:45 UTC
[royale-compiler] 02/02: formatter: clean up API to better match linter's more streamlined approach
This is an automated email from the ASF dual-hosted git repository.
joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git
commit 2834c0f8b3b6dad7802d7df82d3e15c6acfd626c
Author: Josh Tynjala <jo...@apache.org>
AuthorDate: Wed Oct 5 12:50:30 2022 -0700
formatter: clean up API to better match linter's more streamlined approach
This involves deprecating some public methods, but they're basically only used in vscode-as3mxml, and that'll be updated quickly after the next Royale release
---
.../org/apache/royale/formatter/FORMATTER.java | 147 ++++++++++++++++++---
.../apache/royale/formatter/FormatterUtils.java | 47 +++++++
2 files changed, 172 insertions(+), 22 deletions(-)
diff --git a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
index 29fd7dd1c..38dab06e2 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -89,24 +89,110 @@ public class FORMATTER {
}
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public int tabSize = 4;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean insertSpaces = false;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean insertFinalNewLine = false;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean placeOpenBraceOnNewLine = true;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean insertSpaceAfterSemicolonInForStatements = true;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean insertSpaceAfterKeywordsInControlFlowStatements = true;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean insertSpaceAfterFunctionKeywordForAnonymousFunctions = false;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean insertSpaceBeforeAndAfterBinaryOperators = true;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean insertSpaceAfterCommaDelimiter = true;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean insertSpaceBetweenMetadataAttributes = true;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean insertSpaceAtStartOfLineComment = true;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public int maxPreserveNewLines = 2;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public Semicolons semicolons = Semicolons.INSERT;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean ignoreProblems = false;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean collapseEmptyBlocks = false;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean mxmlAlignAttributes = false;
+
+ /**
+ * @deprecated Use an FormatterSettings instead
+ */
+ @Deprecated
public boolean mxmlInsertNewLineBetweenAttributes = false;
+ private FormatterSettings settings = new FormatterSettings();
+
private ProblemQuery problemQuery;
private List<File> inputFiles = new ArrayList<File>();
private boolean writeBackToInputFiles = false;
@@ -183,6 +269,10 @@ public class FORMATTER {
return exitCode.getCode();
}
+ /**
+ * @deprecated Use an ASTokenFormatter or MXMLTokenFormatter instead
+ */
+ @Deprecated
public String formatFile(File file, Collection<ICompilerProblem> problems) throws IOException {
String filePath = FilenameNormalization.normalize(file.getAbsolutePath());
FileSpecification fileSpec = new FileSpecification(filePath);
@@ -190,11 +280,20 @@ public class FORMATTER {
return formatFileText(filePath, fileText, problems);
}
+ /**
+ * @deprecated Use an ASTokenFormatter or MXMLTokenFormatter instead
+ */
+ @Deprecated
public String formatFile(File file) throws IOException {
return formatFile(file, null);
}
+ /**
+ * @deprecated Use an ASTokenFormatter or MXMLTokenFormatter instead
+ */
+ @Deprecated
public String formatFileText(String filePath, String text, Collection<ICompilerProblem> problems) {
+ settings = getLegacyFormatterSettings();
filePath = FilenameNormalization.normalize(filePath);
String result = null;
if (filePath.endsWith(".mxml")) {
@@ -208,39 +307,61 @@ public class FORMATTER {
return result;
}
+ /**
+ * @deprecated Use an ASTokenFormatter or MXMLTokenFormatter instead
+ */
+ @Deprecated
public String formatFileText(String filePath, String text) {
return formatFileText(filePath, text, null);
}
+ /**
+ * @deprecated Use an ASTokenFormatter or MXMLTokenFormatter instead
+ */
+ @Deprecated
public String formatActionScriptText(String text, Collection<ICompilerProblem> problems) {
+ settings = getLegacyFormatterSettings();
String filePath = FilenameNormalization.normalize("stdin.as");
return formatASTokens(filePath, text, problems);
}
+ /**
+ * @deprecated Use an ASTokenFormatter or MXMLTokenFormatter instead
+ */
+ @Deprecated
public String formatActionScriptText(String text) {
return formatActionScriptText(text, null);
}
+ /**
+ * @deprecated Use an ASTokenFormatter or MXMLTokenFormatter instead
+ */
+ @Deprecated
public String formatMXMLText(String text, Collection<ICompilerProblem> problems) {
+ settings = getLegacyFormatterSettings();
String filePath = FilenameNormalization.normalize("stdin.mxml");
return formatMXMLTokens(filePath, text, problems);
}
+ /**
+ * @deprecated Use an ASTokenFormatter or MXMLTokenFormatter instead
+ */
+ @Deprecated
public String formatMXMLText(String text) {
return formatMXMLText(text, null);
}
private String formatASTokens(String filePath, String text, Collection<ICompilerProblem> problems) {
- ASTokenFormatter asFormatter = new ASTokenFormatter(getFormatterSettings());
+ ASTokenFormatter asFormatter = new ASTokenFormatter(settings);
return asFormatter.format(filePath, text, problems);
}
private String formatMXMLTokens(String filePath, String text, Collection<ICompilerProblem> problems) {
- MXMLTokenFormatter mxmlFormatter = new MXMLTokenFormatter(getFormatterSettings());
+ MXMLTokenFormatter mxmlFormatter = new MXMLTokenFormatter(settings);
return mxmlFormatter.format(filePath, text, problems);
}
- private FormatterSettings getFormatterSettings() {
+ private FormatterSettings getLegacyFormatterSettings() {
FormatterSettings result = new FormatterSettings();
result.tabSize = tabSize;
result.insertSpaces = insertSpaces;
@@ -336,26 +457,8 @@ public class FORMATTER {
return false;
}
- collapseEmptyBlocks = configuration.getCollapseEmptyBlocks();
- ignoreProblems = configuration.getIgnoreParsingProblems();
- insertFinalNewLine = configuration.getInsertFinalNewLine();
- insertSpaceAfterCommaDelimiter = configuration.getInsertSpaceAfterCommaDelimiter();
- insertSpaceBetweenMetadataAttributes = configuration.getInsertSpaceBetweenMetadataAttributes();
- insertSpaceAfterFunctionKeywordForAnonymousFunctions = configuration
- .getInsertSpaceAfterFunctionKeywordForAnonymousFunctions();
- insertSpaceAfterKeywordsInControlFlowStatements = configuration
- .getInsertSpaceAfterKeywordsInControlFlowStatements();
- insertSpaceAfterSemicolonInForStatements = configuration.getInsertSpaceAfterSemicolonInForStatements();
- insertSpaceBeforeAndAfterBinaryOperators = configuration.getInsertSpaceBeforeAndAfterBinaryOperators();
- insertSpaceAtStartOfLineComment = configuration.getInsertSpaceAtStartOfLineComment();
- insertSpaces = configuration.getInsertSpaces();
- mxmlInsertNewLineBetweenAttributes = configuration.getMxmlInsertNewLineBetweenAttributes();
- mxmlAlignAttributes = configuration.getMxmlAlignAttributes();
+ settings = FormatterUtils.configurationToFormatterSettings(configuration);
listChangedFiles = configuration.getListFiles();
- maxPreserveNewLines = configuration.getMaxPreserveNewLines();
- placeOpenBraceOnNewLine = configuration.getPlaceOpenBraceOnNewLine();
- semicolons = Semicolons.valueOf(configuration.getSemicolons().toUpperCase());
- tabSize = configuration.getTabSize();
writeBackToInputFiles = configuration.getWriteFiles();
for (String filePath : configuration.getFiles()) {
File inputFile = new File(filePath);
diff --git a/formatter/src/main/java/org/apache/royale/formatter/FormatterUtils.java b/formatter/src/main/java/org/apache/royale/formatter/FormatterUtils.java
new file mode 100644
index 000000000..39e6b89bc
--- /dev/null
+++ b/formatter/src/main/java/org/apache/royale/formatter/FormatterUtils.java
@@ -0,0 +1,47 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+
+package org.apache.royale.formatter;
+
+import org.apache.royale.formatter.config.Configuration;
+import org.apache.royale.formatter.config.Semicolons;
+
+public class FormatterUtils {
+ public static FormatterSettings configurationToFormatterSettings(Configuration configuration) {
+ FormatterSettings settings = new FormatterSettings();
+ settings.tabSize = configuration.getTabSize();
+ settings.insertSpaces = configuration.getInsertSpaces();
+ settings.insertFinalNewLine = configuration.getInsertFinalNewLine();
+ settings.placeOpenBraceOnNewLine = configuration.getPlaceOpenBraceOnNewLine();
+ settings.insertSpaceAfterSemicolonInForStatements = configuration.getInsertSpaceAfterSemicolonInForStatements();
+ settings.insertSpaceAfterKeywordsInControlFlowStatements = configuration.getInsertSpaceAfterKeywordsInControlFlowStatements();
+ settings.insertSpaceAfterFunctionKeywordForAnonymousFunctions = configuration.getInsertSpaceAfterFunctionKeywordForAnonymousFunctions();
+ settings.insertSpaceBeforeAndAfterBinaryOperators = configuration.getInsertSpaceBeforeAndAfterBinaryOperators();
+ settings.insertSpaceAfterCommaDelimiter = configuration.getInsertSpaceAfterCommaDelimiter();
+ settings.insertSpaceBetweenMetadataAttributes = configuration.getInsertSpaceBetweenMetadataAttributes();
+ settings.insertSpaceAtStartOfLineComment = configuration.getInsertSpaceAtStartOfLineComment();
+ settings.maxPreserveNewLines = configuration.getMaxPreserveNewLines();
+ settings.semicolons = Semicolons.valueOf(configuration.getSemicolons().toUpperCase());
+ settings.ignoreProblems = configuration.getIgnoreParsingProblems();
+ settings.collapseEmptyBlocks = configuration.getCollapseEmptyBlocks();
+ settings.mxmlAlignAttributes = configuration.getMxmlAlignAttributes();
+ settings.mxmlInsertNewLineBetweenAttributes = configuration.getMxmlInsertNewLineBetweenAttributes();
+ return settings;
+ }
+}