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); + } + +}
