You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by yi...@apache.org on 2020/05/14 14:44:51 UTC

[royale-compiler] 01/01: Fixes #826 in royale-asjs

This is an automated email from the ASF dual-hosted git repository.

yishayw pushed a commit to branch inject_script
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit 1d085b95d47f09e0162d19bdaaac9dc1edb007ca
Author: DESKTOP-RH4S838\Yishay <yi...@hotmail.com>
AuthorDate: Thu May 14 17:44:33 2020 +0300

    Fixes #826 in royale-asjs
---
 .../codegen/mxml/royale/MXMLRoyalePublisher.java   | 40 ++++++++++++----------
 .../compiler/internal/graph/GoogDepsWriter.java    | 12 +++----
 .../codegen/js/royale/TestRoyaleEmitter.java       | 10 +++---
 3 files changed, 33 insertions(+), 29 deletions(-)

diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
index 1f9fb05..89d364f 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyalePublisher.java
@@ -517,41 +517,45 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
         // is generated here so it can be used for outputting the html templates.
         String depsFileData = gdw.generateDeps(project, problems);
 
-        // FOR MODULES: this generate inject_html lines for js to be added to __deps.js
-        String moduleAdditionHTML = "";
+        // FOR MODULES: this generates inject_script lines for js to be added to __deps.js
+        String additionalScript = "";
 
         if (project.isModule(mainClassQName))
         {
             for (String s : additionalHTML)
             {
-                moduleAdditionHTML += "document.head.innerHTML += '"+ s.trim() + "';";
+                additionalScript += s.trim() + System.lineSeparator();
             }
             
         	// need better test someday
         	depsFileData += "\ngoog.require('" + mainClassQName + "');\n";
-            writeFile(new File(intermediateDir, projectName + "__deps.js"), depsFileData + moduleAdditionHTML + "\n", false);
+            writeFile(new File(intermediateDir, projectName + "__deps.js"), depsFileData + additionalScript + "\n", false);
             gdw.needCSS = true;
             if (configuration.release()) {
-            	writeFile(new File(releaseDir, projectName + ".js"), moduleAdditionHTML, false);
+            	writeFile(new File(releaseDir, projectName + ".js"), additionalScript, false);
             }
         }
         else
         {
 	        File template = ((JSGoogConfiguration)configuration).getHtmlTemplate();
+			List<String> wrappedScript = new ArrayList<String>();
+			wrappedScript.add("<script type=\"text/javascript\">");
+			wrappedScript.addAll(additionalHTML);
+			wrappedScript.add("</script>");
 	        // Create the index.html for the debug-js version.
 	        if (!((JSGoogConfiguration)configuration).getSkipTranspile()) {
 	            if (template != null) {
-	                writeTemplate(template, "intermediate", projectName, mainClassQName, intermediateDir, depsFileData, additionalHTML);
+	                writeTemplate(template, "intermediate", projectName, mainClassQName, intermediateDir, depsFileData, wrappedScript);
 	            } else {
-	                writeHTML("intermediate", projectName, mainClassQName, intermediateDir, depsFileData, additionalHTML);
+	                writeHTML("intermediate", projectName, mainClassQName, intermediateDir, depsFileData, wrappedScript);
 	            }
 	        }
 	        // Create the index.html for the release-js version.
 	        if (configuration.release()) {
 	            if (template != null) {
-	                writeTemplate(template, "release", projectName, mainClassQName, releaseDir, depsFileData, additionalHTML);
+	                writeTemplate(template, "release", projectName, mainClassQName, releaseDir, depsFileData, wrappedScript);
 	            } else {
-	                writeHTML("release", projectName, mainClassQName, releaseDir, null, additionalHTML);
+	                writeHTML("release", projectName, mainClassQName, releaseDir, null, wrappedScript);
 	            }
 	        }
         }        
@@ -586,11 +590,11 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
 
             ok = compilerWrapper.compile();
 
-            // FOR MODULES: add moduleAdditionHTML to main js release file too
+            // FOR MODULES: add additionalScript to main js release file too
             if (project.isModule(mainClassQName))
             {
                 StringBuilder appendString = new StringBuilder();
-                appendString.append(moduleAdditionHTML);
+                appendString.append(additionalScript);
                 writeFile(projectReleaseMainFile, appendString.toString(), true);
             }
 
@@ -690,17 +694,17 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
     {
         boolean inDocComment = false;
         boolean inConstructor = false;
-        boolean inInjectHTML = false;
+        boolean inInjectScript = false;
 	    for (int i = 0; i < lines.size(); i++)
 	    {
             String line = lines.get(i);
             if (inDocComment)
             {
-                if (inInjectHTML)
+                if (inInjectScript)
                 {
-                    if (line.indexOf("</inject_html>") > -1)
+                    if (line.indexOf("</inject_script>") > -1)
                     {
-                        inInjectHTML = false;
+                        inInjectScript = false;
                         continue;
                     }
                     line = line.trim();
@@ -709,10 +713,10 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
                     additionalHTML.add(line);
                     continue;
                 }
-                int c = line.indexOf("<inject_html>");
+                int c = line.indexOf("<inject_script>");
                 if (c != -1)
                 {
-                    inInjectHTML = true;
+                    inInjectScript = true;
                     continue;
                 }
                 if (!inConstructor)
@@ -732,7 +736,7 @@ public class MXMLRoyalePublisher extends JSGoogPublisher implements IJSGoogPubli
                         //we're done
                         break;
                     }
-                    inInjectHTML = false;
+                    inInjectScript = false;
                     inDocComment = false;
                     inConstructor = false;
                 }
diff --git a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
index 9feedaa..e64e17b 100644
--- a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
+++ b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/graph/GoogDepsWriter.java
@@ -1079,7 +1079,7 @@ public class GoogDepsWriter {
 	    fi.suppressLine = -1;
 	    fi.fileoverviewLine = -1;
 		fi.googProvideLine = -1;
-		boolean inInjectHTML = false;
+		boolean inInjectScript = false;
 	    for (int i = 0; i < n; i++)
 	    {
 	        String line = lines.get(i);
@@ -1091,11 +1091,11 @@ public class GoogDepsWriter {
 	        }
 	        else
 	        {
-		        if (inInjectHTML)
+		        if (inInjectScript)
 	            {
-	                if (line.indexOf("</inject_html>") > -1)
+	                if (line.indexOf("</inject_script>") > -1)
 	                {
-	                    inInjectHTML = false;
+	                    inInjectScript = false;
 	                    continue;
 	                }
 	            	line = line.trim();
@@ -1104,10 +1104,10 @@ public class GoogDepsWriter {
 				    additionalHTML.add(line);
 				    continue;
 	            }
-                c = line.indexOf("<inject_html>");
+                c = line.indexOf("<inject_script>");
                 if (c > -1)
                 {
-                    inInjectHTML = true;
+                    inInjectScript = true;
                 }
 		        c = line.indexOf("@constructor");
 		        if (c > -1)
diff --git a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java
index 95cf7b7..e8aeae6 100644
--- a/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java
+++ b/compiler-jx/src/test/java/org/apache/royale/compiler/internal/codegen/js/royale/TestRoyaleEmitter.java
@@ -247,14 +247,14 @@ public class TestRoyaleEmitter extends TestGoogEmitter
     }
     
     @Test
-    public void testInjectHTML()
+    public void testInjectScript()
     {
         String code = "package com.example.components {\n"
         		+ "public class TestClass {"
         	    + "/**\n"
-        	    + " * <inject_html>\n"
+        	    + " * <inject_script>\n"
         		+ " * This will be injected.\n"
-        		+ " * </inject_html>\n"
+        		+ " * </inject_script>\n"
         		+ " */\n"
                 + "public function TestClass() { } } }";
         IFileNode node = compileAS(code);
@@ -272,9 +272,9 @@ public class TestRoyaleEmitter extends TestGoogEmitter
 				"\n" +
 				"\n" +
 				"/**\n" +
-				" * <inject_html>\n" +
+				" * <inject_script>\n" +
 				" * This will be injected.\n" +
-				" * </inject_html>\n" +
+				" * </inject_script>\n" +
 				" * @constructor\n" +
 				" */\n" +
 				"com.example.components.TestClass = function() {\n" +