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 0755d8fa485b810f05fbf4a9d66be567e9f70137
Author: Josh Tynjala <[email protected]>
AuthorDate: Thu Oct 21 13:39:05 2021 -0700

    formatter: MXML formatting tweeaks and tests
---
 .../org/apache/royale/formatter/FORMATTER.java     | 18 +++--
 .../apache/royale/formatter/TestMXMLScript.java    | 89 ++++++++++++++++++++++
 2 files changed, 100 insertions(+), 7 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 2c33869..c4506cf 100644
--- a/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
+++ b/formatter/src/main/java/org/apache/royale/formatter/FORMATTER.java
@@ -401,12 +401,14 @@ public class FORMATTER {
                        if (!ignoreProblems && hasErrors(problems)) {
                                return text;
                        }
-                       String[] formattedLines = 
formattedScriptText.split("\n");
-                       String lineIndent = indent + indent + indent;
-                       for (int i = 0; i < formattedLines.length; i++) {
-                               formattedLines[i] = lineIndent + 
formattedLines[i];
+                       if (formattedScriptText.length() > 0) {
+                               String[] formattedLines = 
formattedScriptText.split("\n");
+                               String lineIndent = indent + indent + indent;
+                               for (int i = 0; i < formattedLines.length; i++) 
{
+                                       formattedLines[i] = lineIndent + 
formattedLines[i];
+                               }
+                               formattedScriptText = String.join("\n", 
formattedLines);
                        }
-                       formattedScriptText = String.join("\n", formattedLines);
                        builder.append(text.substring(lastIndex, start));
                        builder.append(indent);
                        builder.append("<");
@@ -415,8 +417,10 @@ public class FORMATTER {
                        builder.append(indent);
                        builder.append(indent);
                        builder.append("<![CDATA[\n");
-                       builder.append(formattedScriptText);
-                       builder.append("\n");
+                       if (formattedScriptText.length() > 0) {
+                               builder.append(formattedScriptText);
+                               builder.append("\n");
+                       }
                        builder.append(indent);
                        builder.append(indent);
                        builder.append("]]>\n");
diff --git 
a/formatter/src/test/java/org/apache/royale/formatter/TestMXMLScript.java 
b/formatter/src/test/java/org/apache/royale/formatter/TestMXMLScript.java
new file mode 100644
index 0000000..c485e65
--- /dev/null
+++ b/formatter/src/test/java/org/apache/royale/formatter/TestMXMLScript.java
@@ -0,0 +1,89 @@
+package org.apache.royale.formatter;
+
+import static org.junit.Assert.assertEquals;
+
+import org.junit.Test;
+
+public class TestMXMLScript extends BaseFormatterTests {
+       @Test
+       public void testEmptyScriptNoCdata() {
+               FORMATTER formatter = new FORMATTER();
+               formatter.insertSpaces = false;
+               String result = formatter.formatMXMLText(
+               // @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\t<![CDATA[\n" +
+                               "\t\t]]>\n" +
+                               "\t</fx:Script>\n" +
+                               "</s:Application>",
+                               // @formatter:on
+                               result);
+       }
+
+       @Test
+       public void testEmptyScriptWithCdata() {
+               FORMATTER formatter = new FORMATTER();
+               formatter.insertSpaces = false;
+               String result = formatter.formatMXMLText(
+               // @formatter:off
+                       "<s:Application>\n" +
+                       "<fx:Script>\n" +
+                       "<![CDATA[\n" +
+                       "]]>\n" +
+                       "</fx:Script>\n" +
+                       "</s:Application>",
+                       // @formatter:on
+                       problems
+               );
+               assertEquals(
+               // @formatter:off
+                               "<s:Application>\n" +
+                               "\t<fx:Script>\n" +
+                               "\t\t<![CDATA[\n" +
+                               "\t\t]]>\n" +
+                               "\t</fx:Script>\n" +
+                               "</s:Application>",
+                               // @formatter:on
+                               result);
+       }
+
+       @Test
+       public void testScriptWithActionScript() {
+               FORMATTER formatter = new FORMATTER();
+               formatter.insertSpaces = false;
+               String result = formatter.formatMXMLText(
+               // @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\t<![CDATA[\n" +
+                               "\t\t\tpublic var a:Number = 123.4;\n" +
+                               "\t\t]]>\n" +
+                               "\t</fx:Script>\n" +
+                               "</s:Application>",
+                               // @formatter:on
+                               result);
+       }
+       
+}

Reply via email to