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


The following commit(s) were added to refs/heads/develop by this push:
     new 6c5fdf62b formatter: create FormatterSettings object to configure 
ASTokenFormatter and MXMLTokenFormatter
6c5fdf62b is described below

commit 6c5fdf62b016eb33225a8548b9000cf9b3756aa6
Author: Josh Tynjala <[email protected]>
AuthorDate: Thu Jul 28 16:23:05 2022 -0700

    formatter: create FormatterSettings object to configure ASTokenFormatter 
and MXMLTokenFormatter
    
    Also move ASTokenFormatter and MXMLTokenFormatter out of internal package 
so that they can be used directly
---
 .../formatter/{internal => }/ASTokenFormatter.java | 62 +++++++++++-----------
 .../org/apache/royale/formatter/FORMATTER.java     | 46 ++++++++++++----
 .../apache/royale/formatter/FormatterSettings.java | 42 +++++++++++++++
 .../{internal => }/MXMLTokenFormatter.java         | 26 ++++-----
 .../formatter/internal/BaseTokenFormatter.java     | 16 +++---
 5 files changed, 130 insertions(+), 62 deletions(-)

diff --git 
a/formatter/src/main/java/org/apache/royale/formatter/internal/ASTokenFormatter.java
 b/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java
similarity index 95%
rename from 
formatter/src/main/java/org/apache/royale/formatter/internal/ASTokenFormatter.java
rename to 
formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java
index 97c0b18f4..b3848c28c 100644
--- 
a/formatter/src/main/java/org/apache/royale/formatter/internal/ASTokenFormatter.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/ASTokenFormatter.java
@@ -17,7 +17,7 @@
 //
 
////////////////////////////////////////////////////////////////////////////////
 
-package org.apache.royale.formatter.internal;
+package org.apache.royale.formatter;
 
 import java.io.StringReader;
 import java.util.ArrayList;
@@ -42,8 +42,8 @@ import 
org.apache.royale.compiler.internal.workspaces.Workspace;
 import org.apache.royale.compiler.parsing.IASToken;
 import org.apache.royale.compiler.problems.ICompilerProblem;
 import org.apache.royale.compiler.problems.UnexpectedExceptionProblem;
-import org.apache.royale.formatter.FORMATTER;
 import org.apache.royale.formatter.config.Semicolons;
+import org.apache.royale.formatter.internal.BaseTokenFormatter;
 
 public class ASTokenFormatter extends BaseTokenFormatter {
        private static final int TOKEN_TYPE_EXTRA = 999999;
@@ -51,8 +51,8 @@ public class ASTokenFormatter extends BaseTokenFormatter {
        private static final String FORMATTER_TAG_OFF = "@formatter:off";
        private static final String FORMATTER_TAG_ON = "@formatter:on";
 
-       public ASTokenFormatter(FORMATTER formatter) {
-               super(formatter);
+       public ASTokenFormatter(FormatterSettings settings) {
+               super(settings);
        }
 
        private int indent;
@@ -104,7 +104,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                        problems.addAll(tokenizer.getTokenizationProblems());
                }
 
-               if (!formatter.ignoreProblems && hasErrors(problems)) {
+               if (!settings.ignoreProblems && hasErrors(problems)) {
                        return text;
                }
 
@@ -142,7 +142,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                        problems.addAll(parser.getSyntaxProblems());
                }
 
-               if (!formatter.ignoreProblems && hasErrors(problems)) {
+               if (!settings.ignoreProblems && hasErrors(problems)) {
                        return text;
                }
 
@@ -229,7 +229,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                }
                                                boolean oneLineBlock = 
prevToken != null && prevToken.getType() == ASTokenTypes.TOKEN_BLOCK_OPEN
                                                                && nextToken != 
null && nextToken.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE;
-                                               if (oneLineBlock && 
formatter.collapseEmptyBlocks) {
+                                               if (oneLineBlock && 
settings.collapseEmptyBlocks) {
                                                        newLinesInExtra = 0;
                                                }
                                                numRequiredNewLines = 
Math.max(numRequiredNewLines, newLinesInExtra);
@@ -291,11 +291,11 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                        }
                                                        boolean oneLineBlock = 
nextToken != null
                                                                        && 
nextToken.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE;
-                                                       boolean needsNewLine = 
formatter.placeOpenBraceOnNewLine && (!formatter.collapseEmptyBlocks || 
!oneLineBlock);
+                                                       boolean needsNewLine = 
settings.placeOpenBraceOnNewLine && (!settings.collapseEmptyBlocks || 
!oneLineBlock);
                                                        if (needsNewLine) {
                                                                
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
                                                        } else {
-                                                               if 
(oneLineBlock && formatter.collapseEmptyBlocks) {
+                                                               if 
(oneLineBlock && settings.collapseEmptyBlocks) {
                                                                        
numRequiredNewLines = 0;
                                                                }
                                                                requiredSpace = 
true;
@@ -315,7 +315,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                        if 
(stackItem.blockDepth <= 1) {
                                                                boolean 
oneLineBlock = prevToken != null
                                                                                
&& prevToken.getType() == ASTokenTypes.TOKEN_BLOCK_OPEN;
-                                                               if 
(!formatter.collapseEmptyBlocks || !oneLineBlock) {
+                                                               if 
(!settings.collapseEmptyBlocks || !oneLineBlock) {
                                                                        indent 
= decreaseIndent(indent);
                                                                }
                                                                if 
(stackItem.token.getType() == ASTokenTypes.TOKEN_KEYWORD_CASE
@@ -402,7 +402,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case 
ASTokenTypes.TOKEN_OPERATOR_BITWISE_XOR_ASSIGNMENT:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_LOGICAL_AND_ASSIGNMENT:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_LOGICAL_OR_ASSIGNMENT: {
-                                               if 
(formatter.insertSpaceBeforeAndAfterBinaryOperators) {
+                                               if 
(settings.insertSpaceBeforeAndAfterBinaryOperators) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -410,7 +410,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case ASTokenTypes.TOKEN_OPERATOR_STAR: {
                                                boolean isAnyType = 
checkTokenBeforeAnyType(prevTokenNotComment);
                                                boolean isAnyVectorType = 
checkTokensForAnyVectorType(prevTokenNotComment, nextTokenNotComment);
-                                               if (!isAnyType && 
!isAnyVectorType && formatter.insertSpaceBeforeAndAfterBinaryOperators
+                                               if (!isAnyType && 
!isAnyVectorType && settings.insertSpaceBeforeAndAfterBinaryOperators
                                                                && 
!skipWhitespaceBeforeSemicolon) {
                                                        requiredSpace = true;
                                                }
@@ -419,21 +419,21 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case ASTokenTypes.TOKEN_OPERATOR_PLUS:
                                        case ASTokenTypes.TOKEN_OPERATOR_MINUS: 
{
                                                boolean isUnary = 
checkTokenBeforeUnaryOperator(prevTokenNotComment);
-                                               if (!isUnary && 
formatter.insertSpaceBeforeAndAfterBinaryOperators) {
+                                               if (!isUnary && 
settings.insertSpaceBeforeAndAfterBinaryOperators) {
                                                        requiredSpace = true;
                                                }
                                                break;
                                        }
                                        case 
ASTokenTypes.TOKEN_OPERATOR_ASSIGNMENT: {
                                                inVarOrConstDeclaration = false;
-                                               if 
(formatter.insertSpaceBeforeAndAfterBinaryOperators) {
+                                               if 
(settings.insertSpaceBeforeAndAfterBinaryOperators) {
                                                        requiredSpace = true;
                                                }
                                                break;
                                        }
                                        case 
ASTokenTypes.TOKEN_OPERATOR_TERNARY: {
                                                ternaryStack++;
-                                               if 
(formatter.insertSpaceBeforeAndAfterBinaryOperators) {
+                                               if 
(settings.insertSpaceBeforeAndAfterBinaryOperators) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -509,7 +509,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        if (blockOpenPending) {
                                                boolean oneLineBlock = 
nextToken != null
                                                                && 
nextToken.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE;
-                                               if 
(formatter.placeOpenBraceOnNewLine && (!formatter.collapseEmptyBlocks || 
!oneLineBlock)) {
+                                               if 
(settings.placeOpenBraceOnNewLine && (!settings.collapseEmptyBlocks || 
!oneLineBlock)) {
                                                        indent = 
increaseIndent(indent);
                                                }
                                        }
@@ -540,7 +540,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                switch (token.getType()) {
                                        case ASTokenTypes.TOKEN_SEMICOLON: {
                                                if (inControlFlowStatement && 
isInForStatement(blockStack)) {
-                                                       if 
(formatter.insertSpaceAfterSemicolonInForStatements) {
+                                                       if 
(settings.insertSpaceAfterSemicolonInForStatements) {
                                                                requiredSpace = 
true;
                                                        }
                                                        // else no space
@@ -582,8 +582,8 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                        }
                                                        boolean oneLineBlock = 
nextToken != null
                                                                        && 
nextToken.getType() == ASTokenTypes.TOKEN_BLOCK_CLOSE;
-                                                       if 
(!formatter.collapseEmptyBlocks || !oneLineBlock) {
-                                                               if 
(!formatter.placeOpenBraceOnNewLine) {
+                                                       if 
(!settings.collapseEmptyBlocks || !oneLineBlock) {
+                                                               if 
(!settings.placeOpenBraceOnNewLine) {
                                                                        indent 
= increaseIndent(indent);
                                                                }
                                                                
numRequiredNewLines = Math.max(numRequiredNewLines, 1);
@@ -683,7 +683,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case 
ASTokenTypes.TOKEN_KEYWORD_FUNCTION: {
                                                blockStack.add(new 
BlockStackItem(token));
                                                inFunctionDeclaration = true;
-                                               boolean skipSpace = 
!formatter.insertSpaceAfterFunctionKeywordForAnonymousFunctions
+                                               boolean skipSpace = 
!settings.insertSpaceAfterFunctionKeywordForAnonymousFunctions
                                                                && (nextToken 
!= null && nextToken.getType() == ASTokenTypes.TOKEN_PAREN_OPEN);
                                                if (!skipSpace) {
                                                        requiredSpace = true;
@@ -704,7 +704,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case ASTokenTypes.TOKEN_KEYWORD_WITH: {
                                                inControlFlowStatement = true;
                                                blockStack.add(new 
BlockStackItem(token));
-                                               if 
(formatter.insertSpaceAfterKeywordsInControlFlowStatements && 
!skipWhitespaceBeforeSemicolon) {
+                                               if 
(settings.insertSpaceAfterKeywordsInControlFlowStatements && 
!skipWhitespaceBeforeSemicolon) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -712,7 +712,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case ASTokenTypes.TOKEN_KEYWORD_SWITCH: 
{
                                                inControlFlowStatement = true;
                                                blockStack.add(new 
SwitchBlockStackItem(token));
-                                               if 
(formatter.insertSpaceAfterKeywordsInControlFlowStatements && 
!skipWhitespaceBeforeSemicolon) {
+                                               if 
(settings.insertSpaceAfterKeywordsInControlFlowStatements && 
!skipWhitespaceBeforeSemicolon) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -876,7 +876,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case 
ASTokenTypes.TOKEN_OPERATOR_BITWISE_XOR_ASSIGNMENT:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_LOGICAL_AND_ASSIGNMENT:
                                        case 
ASTokenTypes.TOKEN_OPERATOR_LOGICAL_OR_ASSIGNMENT: {
-                                               if 
(formatter.insertSpaceBeforeAndAfterBinaryOperators && 
!skipWhitespaceBeforeSemicolon) {
+                                               if 
(settings.insertSpaceBeforeAndAfterBinaryOperators && 
!skipWhitespaceBeforeSemicolon) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -884,7 +884,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case ASTokenTypes.TOKEN_OPERATOR_STAR: {
                                                boolean isAnyType = 
checkTokenBeforeAnyType(prevTokenNotComment);
                                                boolean isAnyVectorType = 
checkTokensForAnyVectorType(prevTokenNotComment, nextTokenNotComment);
-                                               if (!isAnyType && 
!isAnyVectorType && formatter.insertSpaceBeforeAndAfterBinaryOperators
+                                               if (!isAnyType && 
!isAnyVectorType && settings.insertSpaceBeforeAndAfterBinaryOperators
                                                                && 
!skipWhitespaceBeforeSemicolon) {
                                                        requiredSpace = true;
                                                }
@@ -893,7 +893,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        case ASTokenTypes.TOKEN_OPERATOR_PLUS:
                                        case ASTokenTypes.TOKEN_OPERATOR_MINUS: 
{
                                                boolean isUnary = 
checkTokenBeforeUnaryOperator(prevTokenNotComment);
-                                               if (!isUnary && 
formatter.insertSpaceBeforeAndAfterBinaryOperators && 
!skipWhitespaceBeforeSemicolon) {
+                                               if (!isUnary && 
settings.insertSpaceBeforeAndAfterBinaryOperators && 
!skipWhitespaceBeforeSemicolon) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -902,7 +902,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                                if (varOrConstChainLevel == 
blockStack.size()) {
                                                        inVarOrConstDeclaration 
= true;
                                                }
-                                               if 
(formatter.insertSpaceAfterCommaDelimiter && !skipWhitespaceBeforeSemicolon) {
+                                               if 
(settings.insertSpaceAfterCommaDelimiter && !skipWhitespaceBeforeSemicolon) {
                                                        requiredSpace = true;
                                                }
                                                break;
@@ -1006,8 +1006,8 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                        if (skipFormatting) {
                                                return token.isImplicit() ? "" 
: token.getText();
                                        }
-                                       boolean skipSemicolon = 
Semicolons.REMOVE.equals(formatter.semicolons)
-                                                       || 
(Semicolons.IGNORE.equals(formatter.semicolons) && token.isImplicit());
+                                       boolean skipSemicolon = 
Semicolons.REMOVE.equals(settings.semicolons)
+                                                       || 
(Semicolons.IGNORE.equals(settings.semicolons) && token.isImplicit());
                                        if (!skipSemicolon) {
                                                return token.getText();
                                        }
@@ -1047,7 +1047,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                case 
MetadataTokenTypes.TOKEN_ATTR_OPERATOR_NS_QUALIFIER: {
                                        if (needsComma) {
                                                builder.append(",");
-                                               if 
(formatter.insertSpaceBetweenMetadataAttributes) {
+                                               if 
(settings.insertSpaceBetweenMetadataAttributes) {
                                                        builder.append(" ");
                                                }
                                        }
@@ -1066,7 +1066,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                                case MetadataTokenTypes.TOKEN_STRING: {
                                        if (needsComma) {
                                                builder.append(",");
-                                               if 
(formatter.insertSpaceBetweenMetadataAttributes) {
+                                               if 
(settings.insertSpaceBetweenMetadataAttributes) {
                                                        builder.append(" ");
                                                }
                                        }
@@ -1088,7 +1088,7 @@ public class ASTokenFormatter extends BaseTokenFormatter {
                comment = comment.substring(2).trim();
                StringBuilder builder = new StringBuilder();
                builder.append("//");
-               if (formatter.insertSpaceAtStartOfLineComment) {
+               if (settings.insertSpaceAtStartOfLineComment) {
                        builder.append(" ");
                }
                builder.append(comment);
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 469b08b61..e6ad9be4b 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -49,8 +49,6 @@ import org.apache.royale.formatter.config.ConfigurationBuffer;
 import org.apache.royale.formatter.config.ConfigurationValue;
 import org.apache.royale.formatter.config.Configurator;
 import org.apache.royale.formatter.config.Semicolons;
-import org.apache.royale.formatter.internal.ASTokenFormatter;
-import org.apache.royale.formatter.internal.MXMLTokenFormatter;
 import org.apache.royale.utils.FilenameNormalization;
 
 /**
@@ -199,11 +197,9 @@ public class FORMATTER {
                filePath = FilenameNormalization.normalize(filePath);
                String result = null;
                if (filePath.endsWith(".mxml")) {
-                       MXMLTokenFormatter mxmlFormatter = new 
MXMLTokenFormatter(this);
-                       result = mxmlFormatter.format(filePath, text, problems);
+                       result = formatMXMLTokens(filePath, text, problems);
                } else {
-                       ASTokenFormatter asFormatter = new 
ASTokenFormatter(this);
-                       result = asFormatter.format(filePath, text, problems);
+                       result = formatASTokens(filePath, text, problems);
                }
                if (insertFinalNewLine && result.charAt(result.length() - 1) != 
'\n') {
                        return result + '\n';
@@ -217,8 +213,7 @@ public class FORMATTER {
 
        public String formatActionScriptText(String text, 
Collection<ICompilerProblem> problems) {
                String filePath = FilenameNormalization.normalize("stdin.as");
-               ASTokenFormatter asFormatter = new ASTokenFormatter(this);
-               return asFormatter.format(filePath, text, problems);
+               return formatASTokens(filePath, text, problems);
        }
 
        public String formatActionScriptText(String text) {
@@ -227,14 +222,45 @@ public class FORMATTER {
 
        public String formatMXMLText(String text, Collection<ICompilerProblem> 
problems) {
                String filePath = FilenameNormalization.normalize("stdin.mxml");
-               MXMLTokenFormatter mxmlFormatter = new MXMLTokenFormatter(this);
-               return mxmlFormatter.format(filePath, text, problems);
+               return formatMXMLTokens(filePath, text, problems);
        }
 
        public String formatMXMLText(String text) {
                return formatMXMLText(text, null);
        }
 
+       private String formatASTokens(String filePath, String text, 
Collection<ICompilerProblem> problems) {
+               ASTokenFormatter asFormatter = new 
ASTokenFormatter(getFormatterSettings());
+               return asFormatter.format(filePath, text, problems);
+       }
+
+       private String formatMXMLTokens(String filePath, String text, 
Collection<ICompilerProblem> problems) {
+               MXMLTokenFormatter mxmlFormatter = new 
MXMLTokenFormatter(getFormatterSettings());
+               return mxmlFormatter.format(filePath, text, problems);
+       }
+
+       private FormatterSettings getFormatterSettings() {
+               FormatterSettings result = new FormatterSettings();
+               result.tabSize = tabSize;
+               result.insertSpaces = insertSpaces;
+               result.insertFinalNewLine = insertFinalNewLine;
+               result.placeOpenBraceOnNewLine = placeOpenBraceOnNewLine;
+               result.insertSpaceAfterSemicolonInForStatements = 
insertSpaceAfterSemicolonInForStatements;
+               result.insertSpaceAfterKeywordsInControlFlowStatements = 
insertSpaceAfterKeywordsInControlFlowStatements;
+               result.insertSpaceAfterFunctionKeywordForAnonymousFunctions = 
insertSpaceAfterFunctionKeywordForAnonymousFunctions;
+               result.insertSpaceBeforeAndAfterBinaryOperators = 
insertSpaceBeforeAndAfterBinaryOperators;
+               result.insertSpaceAfterCommaDelimiter = 
insertSpaceAfterCommaDelimiter;
+               result.insertSpaceBetweenMetadataAttributes = 
insertSpaceBetweenMetadataAttributes;
+               result.insertSpaceAtStartOfLineComment = 
insertSpaceAtStartOfLineComment;
+               result.maxPreserveNewLines = maxPreserveNewLines;
+               result.semicolons = semicolons;
+               result.ignoreProblems = ignoreProblems;
+               result.collapseEmptyBlocks = collapseEmptyBlocks;
+               result.mxmlAlignAttributes = mxmlAlignAttributes;
+               result.mxmlInsertNewLineBetweenAttributes = 
mxmlInsertNewLineBetweenAttributes;
+               return result;
+       }
+
        /**
         * Get the start up message that contains the program name with the 
copyright
         * notice.
diff --git 
a/formatter/src/main/java/org/apache/royale/formatter/FormatterSettings.java 
b/formatter/src/main/java/org/apache/royale/formatter/FormatterSettings.java
new file mode 100644
index 000000000..c083f01c3
--- /dev/null
+++ b/formatter/src/main/java/org/apache/royale/formatter/FormatterSettings.java
@@ -0,0 +1,42 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  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.Semicolons;
+
+public class FormatterSettings {
+       public int tabSize = 4;
+       public boolean insertSpaces = false;
+       public boolean insertFinalNewLine = false;
+       public boolean placeOpenBraceOnNewLine = true;
+       public boolean insertSpaceAfterSemicolonInForStatements = true;
+       public boolean insertSpaceAfterKeywordsInControlFlowStatements = true;
+       public boolean insertSpaceAfterFunctionKeywordForAnonymousFunctions = 
false;
+       public boolean insertSpaceBeforeAndAfterBinaryOperators = true;
+       public boolean insertSpaceAfterCommaDelimiter = true;
+       public boolean insertSpaceBetweenMetadataAttributes = true;
+       public boolean insertSpaceAtStartOfLineComment = true;
+       public int maxPreserveNewLines = 2;
+       public Semicolons semicolons = Semicolons.INSERT;
+       public boolean ignoreProblems = false;
+       public boolean collapseEmptyBlocks = false;
+       public boolean mxmlAlignAttributes = false;
+       public boolean mxmlInsertNewLineBetweenAttributes = false;
+}
diff --git 
a/formatter/src/main/java/org/apache/royale/formatter/internal/MXMLTokenFormatter.java
 b/formatter/src/main/java/org/apache/royale/formatter/MXMLTokenFormatter.java
similarity index 96%
rename from 
formatter/src/main/java/org/apache/royale/formatter/internal/MXMLTokenFormatter.java
rename to 
formatter/src/main/java/org/apache/royale/formatter/MXMLTokenFormatter.java
index 662a3b798..a0b5dccd6 100644
--- 
a/formatter/src/main/java/org/apache/royale/formatter/internal/MXMLTokenFormatter.java
+++ 
b/formatter/src/main/java/org/apache/royale/formatter/MXMLTokenFormatter.java
@@ -17,7 +17,7 @@
 //
 
////////////////////////////////////////////////////////////////////////////////
 
-package org.apache.royale.formatter.internal;
+package org.apache.royale.formatter;
 
 import java.io.StringReader;
 import java.util.ArrayList;
@@ -33,7 +33,7 @@ import org.apache.royale.compiler.parsing.IMXMLToken;
 import org.apache.royale.compiler.parsing.MXMLTokenTypes;
 import org.apache.royale.compiler.problems.ICompilerProblem;
 import org.apache.royale.compiler.problems.UnexpectedExceptionProblem;
-import org.apache.royale.formatter.FORMATTER;
+import org.apache.royale.formatter.internal.BaseTokenFormatter;
 
 public class MXMLTokenFormatter extends BaseTokenFormatter {
        private static final int TOKEN_TYPE_EXTRA = 999999;
@@ -41,8 +41,8 @@ public class MXMLTokenFormatter extends BaseTokenFormatter {
        private static final String FORMATTER_TAG_OFF = "@formatter:off";
        private static final String FORMATTER_TAG_ON = "@formatter:on";
 
-       public MXMLTokenFormatter(FORMATTER formatter) {
-               super(formatter);
+       public MXMLTokenFormatter(FormatterSettings settings) {
+               super(settings);
        }
 
        private int indent;
@@ -77,7 +77,7 @@ public class MXMLTokenFormatter extends BaseTokenFormatter {
                        
problems.addAll(mxmlTokenizer.getTokenizationProblems());
                }
 
-               if (!formatter.ignoreProblems && hasErrors(problems)) {
+               if (!settings.ignoreProblems && hasErrors(problems)) {
                        return text;
                }
 
@@ -302,7 +302,7 @@ public class MXMLTokenFormatter extends BaseTokenFormatter {
                                        break;
                                }
                                case MXMLTokenTypes.TOKEN_STRING: {
-                                       if (inOpenTag && 
formatter.mxmlInsertNewLineBetweenAttributes && nextToken != null
+                                       if (inOpenTag && 
settings.mxmlInsertNewLineBetweenAttributes && nextToken != null
                                                        && nextToken.getType() 
!= MXMLTokenTypes.TOKEN_TAG_END
                                                        && nextToken.getType() 
!= MXMLTokenTypes.TOKEN_EMPTY_TAG_END) {
                                                numRequiredNewLines = 
Math.max(numRequiredNewLines, 1);
@@ -331,9 +331,9 @@ public class MXMLTokenFormatter extends BaseTokenFormatter {
        private String formatMXMLScriptElement(String filePath, int line, 
String text,
                        Collection<ICompilerProblem> problems) {
                String indent = "\t";
-               if (formatter.insertSpaces) {
+               if (settings.insertSpaces) {
                        indent = "";
-                       for (int i = 0; i < formatter.tabSize; i++) {
+                       for (int i = 0; i < settings.tabSize; i++) {
                                indent += " ";
                        }
                }
@@ -354,9 +354,9 @@ public class MXMLTokenFormatter extends BaseTokenFormatter {
                String cdataText = scriptMatcher.group(3);
                String scriptText = scriptMatcher.group(4);
                boolean requireCdata = cdataText != null || 
"Script".equals(scriptTagName);
-               ASTokenFormatter asFormatter = new ASTokenFormatter(formatter);
+               ASTokenFormatter asFormatter = new ASTokenFormatter(settings);
                String formattedScriptText = asFormatter.format(filePath + 
"@Script[" + line + "]", scriptText, problems);
-               if (!formatter.ignoreProblems && hasErrors(problems)) {
+               if (!settings.ignoreProblems && hasErrors(problems)) {
                        return text;
                }
                if (formattedScriptText.length() > 0) {
@@ -443,14 +443,14 @@ public class MXMLTokenFormatter extends 
BaseTokenFormatter {
        }
 
        private String getAttributeIndent(IMXMLToken openTagToken) {
-               if (!formatter.mxmlAlignAttributes) {
+               if (!settings.mxmlAlignAttributes) {
                        return getIndent();
                }
                int indentSize = openTagToken.getText().length() + 1;
                String result = "";
-               while (indentSize >= formatter.tabSize) {
+               while (indentSize >= settings.tabSize) {
                        result += getIndent();
-                       indentSize -= formatter.tabSize;
+                       indentSize -= settings.tabSize;
                }
                for (int i = 0; i < indentSize; i++) {
                        result += " ";
diff --git 
a/formatter/src/main/java/org/apache/royale/formatter/internal/BaseTokenFormatter.java
 
b/formatter/src/main/java/org/apache/royale/formatter/internal/BaseTokenFormatter.java
index 158f64237..1ad662cfd 100644
--- 
a/formatter/src/main/java/org/apache/royale/formatter/internal/BaseTokenFormatter.java
+++ 
b/formatter/src/main/java/org/apache/royale/formatter/internal/BaseTokenFormatter.java
@@ -24,13 +24,13 @@ import java.util.Collection;
 import org.apache.royale.compiler.clients.problems.CompilerProblemCategorizer;
 import org.apache.royale.compiler.problems.CompilerProblemSeverity;
 import org.apache.royale.compiler.problems.ICompilerProblem;
-import org.apache.royale.formatter.FORMATTER;
+import org.apache.royale.formatter.FormatterSettings;
 
 public abstract class BaseTokenFormatter {
-       protected FORMATTER formatter;
+       protected FormatterSettings settings;
 
-       protected BaseTokenFormatter(FORMATTER formatter) {
-               this.formatter = formatter;
+       protected BaseTokenFormatter(FormatterSettings settings) {
+               this.settings = settings;
        }
 
        protected boolean hasErrors(Collection<ICompilerProblem> problems) {
@@ -53,9 +53,9 @@ public abstract class BaseTokenFormatter {
        }
 
        protected String getIndent() {
-               if (formatter.insertSpaces) {
+               if (settings.insertSpaces) {
                        String result = "";
-                       for (int j = 0; j < formatter.tabSize; j++) {
+                       for (int j = 0; j < settings.tabSize; j++) {
                                result += " ";
                        }
                        return result;
@@ -71,8 +71,8 @@ public abstract class BaseTokenFormatter {
        }
 
        protected void appendNewLines(StringBuilder builder, int 
numRequiredNewLines) {
-               if (formatter.maxPreserveNewLines != 0) {
-                       numRequiredNewLines = 
Math.min(formatter.maxPreserveNewLines, numRequiredNewLines);
+               if (settings.maxPreserveNewLines != 0) {
+                       numRequiredNewLines = 
Math.min(settings.maxPreserveNewLines, numRequiredNewLines);
                }
                for (int j = 0; j < numRequiredNewLines; j++) {
                        builder.append('\n');

Reply via email to