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 64e040c0ca0dfb0029098599de1ad895121550cf
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Oct 6 10:04:40 2021 -0700

    formatter: option to insert a space at the start of line comments
---
 .../org/apache/royale/formatter/FORMATTER.java     | 10 ++++++++-
 .../royale/formatter/config/Configuration.java     | 18 +++++++++++++++
 .../royale/formatter/TestSingleLineComment.java    | 26 +++++++++++++++++++++-
 3 files changed, 52 insertions(+), 2 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 ee6ceb8..6eed027 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -104,6 +104,7 @@ class FORMATTER {
        public boolean insertSpaceAfterFunctionKeywordForAnonymousFunctions = 
false;
        public boolean insertSpaceBeforeAndAfterBinaryOperators = true;
        public boolean insertSpaceAfterCommaDelimiter = true;
+       public boolean insertSpaceAtStartOfLineComment = true;
        public int maxPreserveNewLines = 2;
        public Semicolons semicolons = Semicolons.INSERT;
        public boolean ignoreProblems = false;
@@ -293,6 +294,7 @@ class FORMATTER {
                                        
.getInsertSpaceAfterKeywordsInControlFlowStatements();
                        insertSpaceAfterSemicolonInForStatements = 
configuration.getInsertSpaceAfterSemicolonInForStatements();
                        insertSpaceBeforeAndAfterBinaryOperators = 
configuration.getInsertSpaceBeforeAndAfterBinaryOperators();
+                       insertSpaceAtStartOfLineComment = 
configuration.getInsertSpaceAtStartOfLineComment();
                        insertSpaces = configuration.getInsertSpaces();
                        listChangedFiles = configuration.getListFiles();
                        maxPreserveNewLines = 
configuration.getMaxPreserveNewLines();
@@ -1187,7 +1189,13 @@ class FORMATTER {
 
        private String formatSingleLineComment(String comment) {
                comment = comment.substring(2).trim();
-               return "// " + comment;
+               StringBuilder builder = new StringBuilder();
+               builder.append("//");
+               if(insertSpaceAtStartOfLineComment) {
+                       builder.append(" ");
+               }
+               builder.append(comment);
+               return builder.toString();
        }
 
        private String formatMultiLineComment(String comment) {
diff --git 
a/formatter/src/main/java/org/apache/royale/formatter/config/Configuration.java 
b/formatter/src/main/java/org/apache/royale/formatter/config/Configuration.java
index c66c8a9..1b6699f 100644
--- 
a/formatter/src/main/java/org/apache/royale/formatter/config/Configuration.java
+++ 
b/formatter/src/main/java/org/apache/royale/formatter/config/Configuration.java
@@ -347,6 +347,24 @@ public class Configuration {
     }
 
     //
+    // 'insert-space-line-comment' option
+    //
+
+    private boolean insertSpaceAtStartOfLineComment = true;
+
+    public boolean getInsertSpaceAtStartOfLineComment()
+    {
+        return insertSpaceAtStartOfLineComment;
+    }
+
+    @Config
+    @Mapping("insert-space-line-comment")
+    public void setInsertSpaceAtStartOfLineComment(ConfigurationValue cv, 
boolean b)
+    {
+        this.insertSpaceAtStartOfLineComment = b;
+    }
+
+    //
     // 'collapse-empty-blocks' option
     //
 
diff --git 
a/formatter/src/test/java/org/apache/royale/formatter/TestSingleLineComment.java
 
b/formatter/src/test/java/org/apache/royale/formatter/TestSingleLineComment.java
index 1d96788..7d752be 100644
--- 
a/formatter/src/test/java/org/apache/royale/formatter/TestSingleLineComment.java
+++ 
b/formatter/src/test/java/org/apache/royale/formatter/TestSingleLineComment.java
@@ -25,11 +25,12 @@ import org.junit.Test;
 
 public class TestSingleLineComment extends BaseFormatterTests {
        @Test
-       public void testWithoutSpace() {
+       public void testInsertSpaceAtStartOfLineComment() {
                FORMATTER formatter = new FORMATTER();
                formatter.insertSpaceAfterKeywordsInControlFlowStatements = 
true;
                formatter.placeOpenBraceOnNewLine = true;
                formatter.insertSpaces = false;
+               formatter.insertSpaceAtStartOfLineComment = true;
                String result = formatter.formatText(
                // @formatter:off
                        "//this is a comment",
@@ -42,6 +43,25 @@ public class TestSingleLineComment extends 
BaseFormatterTests {
                                // @formatter:on
                                result);
        }
+       @Test
+       public void testDisableInsertSpaceAtStartOfLineComment() {
+               FORMATTER formatter = new FORMATTER();
+               formatter.insertSpaceAfterKeywordsInControlFlowStatements = 
true;
+               formatter.placeOpenBraceOnNewLine = true;
+               formatter.insertSpaces = false;
+               formatter.insertSpaceAtStartOfLineComment = false;
+               String result = formatter.formatText(
+               // @formatter:off
+                       "// this is a comment",
+                       // @formatter:on
+                       problems
+               );
+               assertEquals(
+               // @formatter:off
+                               "//this is a comment",
+                               // @formatter:on
+                               result);
+       }
 
        @Test
        public void testAtEndOfStatement() {
@@ -49,6 +69,7 @@ public class TestSingleLineComment extends BaseFormatterTests 
{
                formatter.insertSpaceAfterKeywordsInControlFlowStatements = 
true;
                formatter.placeOpenBraceOnNewLine = true;
                formatter.insertSpaces = false;
+               formatter.insertSpaceAtStartOfLineComment = true;
                String result = formatter.formatText(
                // @formatter:off
                        "statement; // this is a comment",
@@ -68,6 +89,7 @@ public class TestSingleLineComment extends BaseFormatterTests 
{
                formatter.insertSpaceAfterKeywordsInControlFlowStatements = 
true;
                formatter.placeOpenBraceOnNewLine = true;
                formatter.insertSpaces = false;
+               formatter.insertSpaceAtStartOfLineComment = true;
                String result = formatter.formatText(
                // @formatter:off
                        "// this is a comment\n" +
@@ -89,6 +111,7 @@ public class TestSingleLineComment extends 
BaseFormatterTests {
                formatter.insertSpaceAfterKeywordsInControlFlowStatements = 
true;
                formatter.placeOpenBraceOnNewLine = true;
                formatter.insertSpaces = false;
+               formatter.insertSpaceAtStartOfLineComment = true;
                String result = formatter.formatText(
                // @formatter:off
                        "statement;\n" +
@@ -110,6 +133,7 @@ public class TestSingleLineComment extends 
BaseFormatterTests {
                formatter.insertSpaceAfterKeywordsInControlFlowStatements = 
true;
                formatter.placeOpenBraceOnNewLine = true;
                formatter.insertSpaces = false;
+               formatter.insertSpaceAtStartOfLineComment = true;
                String result = formatter.formatText(
                // @formatter:off
                        "if (statement) // this is a comment\n" +

Reply via email to