You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2016/09/27 19:11:11 UTC
[1/2] git commit: [flex-falcon] [refs/heads/develop] - add
-html-template option so FalconJX will fill in a template instead of
generating an index.html file and add a -html-output-filename option so the
output file doesn't have to be called index.html
Repository: flex-falcon
Updated Branches:
refs/heads/develop 7405eca0b -> e880f34d5
add -html-template option so FalconJX will fill in a template instead of generating an index.html file and add a -html-output-filename option so the output file doesn't have to be called index.html
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/3afe7741
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/3afe7741
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/3afe7741
Branch: refs/heads/develop
Commit: 3afe7741f559ac214de4ef0beb14ca456cfe9010
Parents: 796b5e8
Author: Alex Harui <ah...@apache.org>
Authored: Tue Sep 27 12:06:51 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Sep 27 12:06:51 2016 -0700
----------------------------------------------------------------------
.../mxml/flexjs/MXMLFlexJSPublisher.java | 77 +++++++++++++++++++-
.../driver/js/goog/JSGoogConfiguration.java | 46 ++++++++++++
.../internal/projects/FlexJSProject.java | 24 ++++++
3 files changed, 144 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3afe7741/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
index 64b3c86..e8287b3 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher.java
@@ -18,6 +18,7 @@
*/
package org.apache.flex.compiler.internal.codegen.mxml.flexjs;
+import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
@@ -53,6 +54,10 @@ import org.apache.flex.compiler.internal.driver.js.flexjs.JSCSSCompilationSessio
import org.apache.flex.compiler.internal.driver.js.goog.JSGoogConfiguration;
import org.apache.flex.compiler.internal.graph.GoogDepsWriter;
import org.apache.flex.compiler.internal.projects.FlexJSProject;
+import org.apache.flex.compiler.internal.targets.ITargetAttributes;
+import org.apache.flex.compiler.targets.ISWFTarget;
+import org.apache.flex.compiler.targets.ITargetReport;
+import org.apache.flex.compiler.targets.ITargetSettings;
import org.apache.flex.compiler.utils.JSClosureCompilerWrapper;
import org.apache.flex.swc.ISWC;
import org.apache.flex.swc.ISWCFileEntry;
@@ -419,10 +424,21 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
// File srcDeps = new File(depsSrcFilePath);
+ File template = ((JSGoogConfiguration)configuration).getHtmlTemplate();
if (!((JSGoogConfiguration)configuration).getSkipTranspile())
- writeHTML("intermediate", projectName, intermediateDirPath, depsFileData.toString(), gdw.additionalHTML);
+ {
+ if (template != null)
+ writeTemplate(template, "intermediate", projectName, intermediateDirPath, depsFileData.toString(), gdw.additionalHTML);
+ else
+ writeHTML("intermediate", projectName, intermediateDirPath, depsFileData.toString(), gdw.additionalHTML);
+ }
if (!configuration.debug())
- writeHTML("release", projectName, releaseDirPath, null, gdw.additionalHTML);
+ {
+ if (template != null)
+ writeTemplate(template, "release", projectName, intermediateDirPath, depsFileData.toString(), gdw.additionalHTML);
+ else
+ writeHTML("release", projectName, releaseDirPath, null, gdw.additionalHTML);
+ }
if (project.needCSS || ((JSGoogConfiguration)configuration).getSkipTranspile())
{
if (!((JSGoogConfiguration)configuration).getSkipTranspile())
@@ -564,6 +580,61 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
return code;
}
+ protected void writeTemplate(File template, String type, String projectName, String dirPath, String deps, List<String> additionalHTML)
+ throws IOException
+ {
+ String input = readCode(template);
+ ITargetAttributes ta = project.computeTargetAttributes();
+ Float width = ta.getWidth();
+ Float height = ta.getHeight();
+ String result = input.replaceAll("\\$\\{application\\}", projectName);
+ result = result.replaceAll("\\$\\{bgcolor\\}", ta.getBackgroundColor());
+ //result = result.replaceAll("\\$\\{expressInstallSwf\\}", expressInstallSwf);
+ if (height != null)
+ result = result.replaceAll("\\$\\{height\\}", height.toString());
+ result = result.replaceAll("\\$\\{title\\}", ta.getPageTitle());
+ //result = result.replaceAll("\\$\\{version_major\\}", versionMajor);
+ //result = result.replaceAll("\\$\\{version_minor\\}", versionMinor);
+ //result = result.replaceAll("\\$\\{version_revision\\}", versionRevision);
+ if (width != null)
+ result = result.replaceAll("\\$\\{width\\}", width.toString());
+ //result = result.replaceAll("\\$\\{useBrowserHistory\\}", useBrowserHistory);
+
+ StringBuilder addHTML = new StringBuilder();
+ for (String s : additionalHTML)
+ addHTML.append(s).append("\n");
+
+ if ("intermediate".equals(type))
+ {
+ addHTML.append("\t<script type=\"text/javascript\" src=\"./library/closure/goog/base.js\"></script>\n");
+ addHTML.append("\t<script type=\"text/javascript\">\n");
+ addHTML.append(deps);
+ addHTML.append("\t\tgoog.require(\"");
+ addHTML.append(projectName);
+ addHTML.append("\");\n");
+ addHTML.append("\t</script>\n");
+ }
+ else
+ {
+ addHTML.append("\t<script type=\"text/javascript\" src=\"./");
+ addHTML.append(projectName);
+ addHTML.append(".js\"></script>\n");
+ }
+ result = result.replaceAll("\\$\\{head\\}", addHTML.toString());
+
+ StringBuilder htmlFile = new StringBuilder();
+ htmlFile.append("\t<script type=\"text/javascript\">\n");
+ htmlFile.append("\t\tnew ");
+ htmlFile.append(projectName);
+ htmlFile.append("()");
+ htmlFile.append(".start();\n");
+ htmlFile.append("\t</script>\n");
+
+ result = result.replaceAll("\\$\\{body\\}", htmlFile.toString());
+
+ writeFile(dirPath + File.separator + ((JSGoogConfiguration) configuration).getHtmlOutputFileName(), result, false);
+ }
+
protected void writeHTML(String type, String projectName, String dirPath, String deps, List<String> additionalHTML)
throws IOException
{
@@ -606,7 +677,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher implements IJSPublisher
htmlFile.append("</body>\n");
htmlFile.append("</html>");
- writeFile(dirPath + File.separator + "index.html", htmlFile.toString(), false);
+ writeFile(dirPath + File.separator + ((JSGoogConfiguration) configuration).getHtmlOutputFileName(), htmlFile.toString(), false);
}
private void writeCSS(String projectName, String dirPath) throws IOException
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3afe7741/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
index 6eb1037..40bdcfc 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/driver/js/goog/JSGoogConfiguration.java
@@ -29,6 +29,7 @@ import org.apache.flex.compiler.clients.JSConfiguration;
import org.apache.flex.compiler.clients.MXMLJSC;
import org.apache.flex.compiler.config.ConfigurationValue;
import org.apache.flex.compiler.exceptions.ConfigurationException;
+import org.apache.flex.compiler.internal.config.annotations.Arguments;
import org.apache.flex.compiler.internal.config.annotations.Config;
import org.apache.flex.compiler.internal.config.annotations.FlexOnly;
import org.apache.flex.compiler.internal.config.annotations.InfiniteArguments;
@@ -328,4 +329,49 @@ public class JSGoogConfiguration extends JSConfiguration
{
jsOutputOptimizations.addAll(value);
}
+
+ // 'html-template' option
+ //
+
+ private String htmlTemplateFileName = null;
+
+ public File getHtmlTemplate()
+ {
+ return htmlTemplateFileName != null ? new File(htmlTemplateFileName) : null;
+ }
+
+ /**
+ * Specify an HTML template with tokens to replace with application-specific values.
+ * If not specified a standard template is generated.
+ */
+ @Config(advanced = true)
+ @Mapping("html-template")
+ @Arguments("filename")
+ public void setHtmlTemplate(ConfigurationValue cv, String filename)
+ {
+ this.htmlTemplateFileName = getOutputPath(cv, filename);
+ }
+
+ // 'html-output-filename' option
+ //
+
+ private String htmlOutputFileName = "index.html";
+
+ public String getHtmlOutputFileName()
+ {
+ return htmlOutputFileName;
+ }
+
+ /**
+ * Specify the name of the HTML file that goes in the output folder. Default is index.html.
+ */
+ @Config(advanced = true)
+ @Mapping("html-output-filename")
+ @Arguments("filename")
+ public void setHtmlOutputFileName(ConfigurationValue cv, String filename)
+ {
+ this.htmlOutputFileName = filename;
+ }
+
+
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/3afe7741/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
index 3f4ef14..b63ceb0 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/projects/FlexJSProject.java
@@ -36,11 +36,16 @@ import org.apache.flex.compiler.internal.definitions.InterfaceDefinition;
import org.apache.flex.compiler.internal.driver.js.flexjs.JSCSSCompilationSession;
import org.apache.flex.compiler.internal.driver.js.goog.JSGoogConfiguration;
import org.apache.flex.compiler.internal.scopes.ASProjectScope.DefinitionPromise;
+import org.apache.flex.compiler.internal.targets.ITargetAttributes;
import org.apache.flex.compiler.internal.targets.LinkageChecker;
+import org.apache.flex.compiler.internal.tree.as.FileNode;
+import org.apache.flex.compiler.internal.tree.mxml.MXMLDocumentNode;
+import org.apache.flex.compiler.internal.tree.mxml.MXMLFileNode;
import org.apache.flex.compiler.internal.units.SWCCompilationUnit;
import org.apache.flex.compiler.internal.workspaces.Workspace;
import org.apache.flex.compiler.targets.ITargetSettings;
import org.apache.flex.compiler.tree.as.IASNode;
+import org.apache.flex.compiler.tree.as.IDefinitionNode;
import org.apache.flex.compiler.units.ICompilationUnit;
/**
@@ -330,4 +335,23 @@ public class FlexJSProject extends FlexProject
return MXMLFlexJSEmitterTokens.ID_PREFIX.getToken();
}
+ public ITargetAttributes computeTargetAttributes()
+ {
+ List<String> names;
+ try {
+ names = mainCU.getQualifiedNames();
+ IDefinition def = this.resolveQNameToDefinition(names.get(0));
+ IDefinitionNode node = def.getNode();
+ if (node instanceof MXMLDocumentNode)
+ {
+ MXMLDocumentNode mxmlDoc = (MXMLDocumentNode)node;
+ MXMLFileNode mxmlFile = (MXMLFileNode)mxmlDoc.getParent();
+ return mxmlFile.getTargetAttributes(this);
+ }
+ } catch (InterruptedException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return null;
+ }
}
[2/2] git commit: [flex-falcon] [refs/heads/develop] - Merge branch
'templates' into develop
Posted by ah...@apache.org.
Merge branch 'templates' into develop
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/e880f34d
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/e880f34d
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/e880f34d
Branch: refs/heads/develop
Commit: e880f34d5bb1b57cfa2e529d034fd77b06eb5d73
Parents: 7405eca 3afe774
Author: Alex Harui <ah...@apache.org>
Authored: Tue Sep 27 12:07:38 2016 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Sep 27 12:07:38 2016 -0700
----------------------------------------------------------------------
.../mxml/flexjs/MXMLFlexJSPublisher.java | 77 +++++++++++++++++++-
.../driver/js/goog/JSGoogConfiguration.java | 46 ++++++++++++
.../internal/projects/FlexJSProject.java | 24 ++++++
3 files changed, 144 insertions(+), 3 deletions(-)
----------------------------------------------------------------------