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 6d13e5c8f36a865dc08b0661771e6d48f6e705c3
Author: Josh Tynjala <[email protected]>
AuthorDate: Wed Jan 8 09:32:17 2025 -0800

    formatter: new option mxml-indent-cdata
    
    A similar option existed in Flash Builder, so it makes sense to add it to 
asformat too
---
 .../apache/royale/formatter/FormatterSettings.java |   1 +
 .../apache/royale/formatter/FormatterUtils.java    |   1 +
 .../royale/formatter/MXMLTokenFormatter.java       |  12 ++-
 .../royale/formatter/config/Configuration.java     |  17 ++++
 .../apache/royale/formatter/TestMXMLScript.java    | 104 +++++++++++++++++++--
 5 files changed, 124 insertions(+), 11 deletions(-)

diff --git 
a/formatter/src/main/java/org/apache/royale/formatter/FormatterSettings.java 
b/formatter/src/main/java/org/apache/royale/formatter/FormatterSettings.java
index 908f824e3..1dacbe3e2 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FormatterSettings.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FormatterSettings.java
@@ -40,4 +40,5 @@ public class FormatterSettings {
        public boolean collapseEmptyBlocks = false;
        public boolean mxmlAlignAttributes = false;
        public boolean mxmlInsertNewLineBetweenAttributes = false;
+       public boolean mxmlIndentCData = true;
 }
diff --git 
a/formatter/src/main/java/org/apache/royale/formatter/FormatterUtils.java 
b/formatter/src/main/java/org/apache/royale/formatter/FormatterUtils.java
index 4221977d9..8dc03d8d6 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FormatterUtils.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FormatterUtils.java
@@ -43,6 +43,7 @@ public class FormatterUtils {
                settings.collapseEmptyBlocks = 
configuration.getCollapseEmptyBlocks();
                settings.mxmlAlignAttributes = 
configuration.getMxmlAlignAttributes();
                settings.mxmlInsertNewLineBetweenAttributes = 
configuration.getMxmlInsertNewLineBetweenAttributes();
+               settings.mxmlIndentCData = configuration.getMxmlIndentCData();
                return settings;
        }
 }
diff --git 
a/formatter/src/main/java/org/apache/royale/formatter/MXMLTokenFormatter.java 
b/formatter/src/main/java/org/apache/royale/formatter/MXMLTokenFormatter.java
index f514eaa99..3ec74f99f 100644
--- 
a/formatter/src/main/java/org/apache/royale/formatter/MXMLTokenFormatter.java
+++ 
b/formatter/src/main/java/org/apache/royale/formatter/MXMLTokenFormatter.java
@@ -369,7 +369,7 @@ public class MXMLTokenFormatter extends BaseTokenFormatter {
                }
                if (formattedScriptText.length() > 0) {
                        String[] formattedLines = 
formattedScriptText.split("\n");
-                       String lineIndent = requireCdata ? (indent + indent + 
indent) : (indent + indent);
+                       String lineIndent = (requireCdata && 
settings.mxmlIndentCData) ? (indent + indent + indent) : (indent + indent);
                        for (int i = 0; i < formattedLines.length; i++) {
                                formattedLines[i] = lineIndent + 
formattedLines[i];
                        }
@@ -381,7 +381,10 @@ public class MXMLTokenFormatter extends BaseTokenFormatter 
{
                builder.append(">\n");
                if (requireCdata) {
                        builder.append(indent);
-                       builder.append(indent);
+                       if (settings.mxmlIndentCData)
+                       {
+                               builder.append(indent);
+                       }
                        builder.append("<![CDATA[\n");
                }
                if (formattedScriptText.length() > 0) {
@@ -390,7 +393,10 @@ public class MXMLTokenFormatter extends BaseTokenFormatter 
{
                }
                if (requireCdata) {
                        builder.append(indent);
-                       builder.append(indent);
+                       if (settings.mxmlIndentCData)
+                       {
+                               builder.append(indent);
+                       }
                        builder.append("]]>\n");
                }
                builder.append(indent);
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 aa2f69535..e548aed70 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
@@ -588,6 +588,23 @@ public class Configuration {
         this.mxmlInsertNewLineBetweenAttributes = b;
     }
 
+    //
+    // 'mxml-indent-cdata' option
+    //
+
+    private boolean mxmlIndentCData = true;
+
+    public boolean getMxmlIndentCData()
+    {
+        return mxmlIndentCData;
+    }
+
+    @Mapping("mxml-indent-cdata")
+    public void setMxmlIndentCData(ConfigurationValue cv, boolean b)
+    {
+        this.mxmlIndentCData = b;
+    }
+
     /**
      * 
      * @param path A path to resolve.
diff --git 
a/formatter/src/test/java/org/apache/royale/formatter/TestMXMLScript.java 
b/formatter/src/test/java/org/apache/royale/formatter/TestMXMLScript.java
index f5c6783e1..b3938f60f 100644
--- a/formatter/src/test/java/org/apache/royale/formatter/TestMXMLScript.java
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestMXMLScript.java
@@ -25,9 +25,10 @@ import org.junit.Test;
 
 public class TestMXMLScript extends BaseFormatterTests {
        @Test
-       public void testEmptyScriptNoCdata() {
+       public void testEmptyScriptNoCDataIndentCDataEnabled() {
                FormatterSettings settings = new FormatterSettings();
                settings.insertSpaces = false;
+               settings.mxmlIndentCData = true;
                MXMLTokenFormatter formatter = new MXMLTokenFormatter(settings);
                String result = formatter.format("file.mxml",
                // @formatter:off
@@ -51,9 +52,37 @@ public class TestMXMLScript extends BaseFormatterTests {
        }
 
        @Test
-       public void testEmptyScriptNoCdataNoWhitespace() {
+       public void testEmptyScriptNoCDataIndentCDataDisabled() {
                FormatterSettings settings = new FormatterSettings();
                settings.insertSpaces = false;
+               settings.mxmlIndentCData = false;
+               MXMLTokenFormatter formatter = new MXMLTokenFormatter(settings);
+               String result = formatter.format("file.mxml",
+               // @formatter:off
+                       "<s:Application>\n" +
+                       "<fx:Script>\n" +
+                       "</fx:Script>\n" +
+                       "</s:Application>",
+                       // @formatter:on
+                       problems
+               );
+               assertEquals(
+               // @formatter:off
+                               "<s:Application>\n" +
+                               "\t<fx:Script>\n" +
+                               "\t<![CDATA[\n" +
+                               "\t]]>\n" +
+                               "\t</fx:Script>\n" +
+                               "</s:Application>",
+                               // @formatter:on
+                               result);
+       }
+
+       @Test
+       public void testEmptyScriptNoCDataNoWhitespaceIndentCDataEnabled() {
+               FormatterSettings settings = new FormatterSettings();
+               settings.insertSpaces = false;
+               settings.mxmlIndentCData = true;
                MXMLTokenFormatter formatter = new MXMLTokenFormatter(settings);
                String result = formatter.format("file.mxml",
                // @formatter:off
@@ -76,9 +105,36 @@ public class TestMXMLScript extends BaseFormatterTests {
        }
 
        @Test
-       public void testEmptyScriptWithCdata() {
+       public void testEmptyScriptNoCDataNoWhitespaceIndentCDataDisabled() {
                FormatterSettings settings = new FormatterSettings();
                settings.insertSpaces = false;
+               settings.mxmlIndentCData = false;
+               MXMLTokenFormatter formatter = new MXMLTokenFormatter(settings);
+               String result = formatter.format("file.mxml",
+               // @formatter:off
+                       "<s:Application>\n" +
+                       "<fx:Script></fx:Script>\n" +
+                       "</s:Application>",
+                       // @formatter:on
+                       problems
+               );
+               assertEquals(
+               // @formatter:off
+                               "<s:Application>\n" +
+                               "\t<fx:Script>\n" +
+                               "\t<![CDATA[\n" +
+                               "\t]]>\n" +
+                               "\t</fx:Script>\n" +
+                               "</s:Application>",
+                               // @formatter:on
+                               result);
+       }
+
+       @Test
+       public void testEmptyScriptWithCDataIndentCDataEnabled() {
+               FormatterSettings settings = new FormatterSettings();
+               settings.insertSpaces = false;
+               settings.mxmlIndentCData = true;
                MXMLTokenFormatter formatter = new MXMLTokenFormatter(settings);
                String result = formatter.format("file.mxml",
                // @formatter:off
@@ -104,9 +160,10 @@ public class TestMXMLScript extends BaseFormatterTests {
        }
 
        @Test
-       public void testEmptyScriptWithCdataNoWhitespace() {
+       public void testEmptyScriptWithCDataNoWhitespaceIndentCDataDisabled() {
                FormatterSettings settings = new FormatterSettings();
                settings.insertSpaces = false;
+               settings.mxmlIndentCData = false;
                MXMLTokenFormatter formatter = new MXMLTokenFormatter(settings);
                String result = formatter.format("file.mxml",
                // @formatter:off
@@ -120,8 +177,8 @@ public class TestMXMLScript extends BaseFormatterTests {
                // @formatter:off
                                "<s:Application>\n" +
                                "\t<fx:Script>\n" +
-                               "\t\t<![CDATA[\n" +
-                               "\t\t]]>\n" +
+                               "\t<![CDATA[\n" +
+                               "\t]]>\n" +
                                "\t</fx:Script>\n" +
                                "</s:Application>",
                                // @formatter:on
@@ -129,9 +186,10 @@ public class TestMXMLScript extends BaseFormatterTests {
        }
 
        @Test
-       public void testScriptWithActionScript() {
+       public void testScriptWithActionScriptIndentCDataEnabled() {
                FormatterSettings settings = new FormatterSettings();
                settings.insertSpaces = false;
+               settings.mxmlIndentCData = true;
                MXMLTokenFormatter formatter = new MXMLTokenFormatter(settings);
                String result = formatter.format("file.mxml",
                // @formatter:off
@@ -157,5 +215,35 @@ public class TestMXMLScript extends BaseFormatterTests {
                                // @formatter:on
                                result);
        }
-       
+
+       @Test
+       public void testScriptWithActionScriptIndentCDataDisabled() {
+               FormatterSettings settings = new FormatterSettings();
+               settings.insertSpaces = false;
+               settings.mxmlIndentCData = false;
+               MXMLTokenFormatter formatter = new MXMLTokenFormatter(settings);
+               String result = formatter.format("file.mxml",
+               // @formatter:off
+                       "<s:Application>\n" +
+                       "<fx:Script>\n" +
+                       "<![CDATA[\n" +
+                       "public var a: Number=123.4;\n" +
+                       "]]>\n" +
+                       "</fx:Script>\n" +
+                       "</s:Application>",
+                       // @formatter:on
+                       problems
+               );
+               assertEquals(
+               // @formatter:off
+                               "<s:Application>\n" +
+                               "\t<fx:Script>\n" +
+                               "\t<![CDATA[\n" +
+                               "\t\tpublic var a:Number = 123.4;\n" +
+                               "\t]]>\n" +
+                               "\t</fx:Script>\n" +
+                               "</s:Application>",
+                               // @formatter:on
+                               result);
+       }
 }

Reply via email to