On 4/24/13 9:34 PM, "Erik de Bruin" <[email protected]> wrote:
> Alex,
>
> Do you have some tests for this lined up to be committed? I'd hate to
> break this while working on other stuff, but without tests in place
> there's no way to catch that.
I don't. Are there other tests of the publisher? Maybe I can borrow from
one of them.
>
> EdB
>
>
>
> On Wed, Apr 24, 2013 at 7:39 PM, <[email protected]> wrote:
>> Handle CSS in FalconJX
>>
>>
>> Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
>> Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/6a164f39
>> Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/6a164f39
>> Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/6a164f39
>>
>> Branch: refs/heads/develop
>> Commit: 6a164f397daf81c680ff65cb117f4b35127a1472
>> Parents: 9a416a2
>> Author: Alex Harui <[email protected]>
>> Authored: Wed Apr 24 10:23:04 2013 -0700
>> Committer: Alex Harui <[email protected]>
>> Committed: Wed Apr 24 10:23:04 2013 -0700
>>
>> ----------------------------------------------------------------------
>> .../internal/codegen/mxml/MXMLBlockWalker.java | 20 ++++++++
>> .../codegen/mxml/flexjs/MXMLFlexJSPublisher.java | 36 +++++++++++---
>> .../internal/visitor/mxml/MXMLNodeSwitch.java | 5 ++-
>> .../compiler/visitor/mxml/IMXMLBlockVisitor.java | 5 ++-
>> 4 files changed, 56 insertions(+), 10 deletions(-)
>> ----------------------------------------------------------------------
>>
>>
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6a164f39/compiler.jx/
>> src/org/apache/flex/compiler/internal/codegen/mxml/MXMLBlockWalker.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLBlockWal
>> ker.java
>> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLBlockWal
>> ker.java
>> index f3d439f..9c968e9 100644
>> ---
>> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLBlockWal
>> ker.java
>> +++
>> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/MXMLBlockWal
>> ker.java
>> @@ -23,6 +23,9 @@ import java.util.List;
>>
>> import org.apache.flex.compiler.codegen.as.IASEmitter;
>> import org.apache.flex.compiler.codegen.mxml.IMXMLEmitter;
>> +import org.apache.flex.compiler.css.ICSSDocument;
>> +import org.apache.flex.compiler.css.ICSSRule;
>> +import org.apache.flex.compiler.internal.projects.FlexJSProject;
>> import org.apache.flex.compiler.problems.ICompilerProblem;
>> import org.apache.flex.compiler.projects.IASProject;
>> import org.apache.flex.compiler.tree.as.IASNode;
>> @@ -43,6 +46,7 @@ import org.apache.flex.compiler.tree.mxml.IMXMLNumberNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLPropertySpecifierNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLScriptNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLStringNode;
>> +import org.apache.flex.compiler.tree.mxml.IMXMLStyleNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLStyleSpecifierNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLUintNode;
>> import org.apache.flex.compiler.units.ICompilationUnit;
>> @@ -51,6 +55,8 @@ import org.apache.flex.compiler.visitor.IBlockWalker;
>> import org.apache.flex.compiler.visitor.mxml.IMXMLBlockVisitor;
>> import org.apache.flex.compiler.visitor.mxml.IMXMLBlockWalker;
>>
>> +import com.google.common.collect.ImmutableList;
>> +
>> /**
>> * @author Michael Schmalle
>> * @author Erik de Bruin
>> @@ -253,6 +259,20 @@ public class MXMLBlockWalker implements
>> IMXMLBlockVisitor, IMXMLBlockWalker
>> }
>>
>> @Override
>> + public void visitStyleBlock(IMXMLStyleNode node)
>> + {
>> + ICSSDocument css = node.getCSSDocument(errors);
>> + StringBuilder sb = new StringBuilder();
>> + ImmutableList<ICSSRule> rules = css.getRules();
>> + for (ICSSRule rule : rules)
>> + {
>> + sb.append(rule.toString());
>> + sb.append("\n\n");
>> + }
>> + ((FlexJSProject)project).cssDocument += sb.toString();
>> + }
>> +
>> + @Override
>> public void visitStyleSpecifier(IMXMLStyleSpecifierNode node)
>> {
>> debug("visitStyleSpecifier()");
>>
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6a164f39/compiler.jx/
>> src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLFlexJSPublisher
>> .java
>> ----------------------------------------------------------------------
>> diff --git
>> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLF
>> lexJSPublisher.java
>> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLF
>> lexJSPublisher.java
>> index 9f461fb..7636d9f 100644
>> ---
>> a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLF
>> lexJSPublisher.java
>> +++
>> b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/mxml/flexjs/MXMLF
>> lexJSPublisher.java
>> @@ -9,8 +9,12 @@ import java.util.ArrayList;
>> import java.util.Collection;
>> import java.util.List;
>>
>> +import org.apache.commons.io.FileUtils;
>> import org.apache.commons.io.FilenameUtils;
>> import org.apache.commons.io.filefilter.DirectoryFileFilter;
>> +import org.apache.commons.io.filefilter.FileFileFilter;
>> +import org.apache.commons.io.filefilter.FileFilterUtils;
>> +import org.apache.commons.io.filefilter.IOFileFilter;
>> import org.apache.commons.io.filefilter.RegexFileFilter;
>> import org.apache.flex.compiler.codegen.js.IJSPublisher;
>> import org.apache.flex.compiler.config.Configuration;
>> @@ -44,7 +48,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher
>> implements
>> }
>>
>> private FlexJSProject project;
>> -
>> +
>> private boolean isMarmotinniRun;
>>
>> @Override
>> @@ -81,6 +85,9 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher
>> implements
>> public void publish() throws IOException
>> {
>> final String intermediateDirPath = outputFolder.getPath();
>> + final File intermediateDir = new File(intermediateDirPath);
>> + File srcDir = new File(configuration.getTargetFile());
>> + srcDir = srcDir.getParentFile();
>>
>> final String projectName = FilenameUtils.getBaseName(configuration
>> .getTargetFile());
>> @@ -157,6 +164,18 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher
>> implements
>> copyFile(closureTPSrcLibDirPath, closureTPTgtLibDirPath);
>> }
>>
>> + IOFileFilter pngSuffixFilter =
>> FileFilterUtils.and(FileFileFilter.FILE,
>> + FileFilterUtils.suffixFileFilter(".png"));
>> + IOFileFilter gifSuffixFilter =
>> FileFilterUtils.and(FileFileFilter.FILE,
>> + FileFilterUtils.suffixFileFilter(".gif"));
>> + IOFileFilter jpgSuffixFilter =
>> FileFilterUtils.and(FileFileFilter.FILE,
>> + FileFilterUtils.suffixFileFilter(".jpg"));
>> + IOFileFilter assetFiles = FileFilterUtils.or(pngSuffixFilter,
>> + jpgSuffixFilter, gifSuffixFilter);
>> +
>> + FileUtils.copyDirectory(srcDir, intermediateDir, assetFiles);
>> + FileUtils.copyDirectory(srcDir, releaseDir, assetFiles);
>> +
>> File srcDeps = new File(depsSrcFilePath);
>>
>> final List<SourceFile> deps = new ArrayList<SourceFile>();
>> @@ -263,7 +282,8 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher
>> implements
>> htmlFile.append("<head>\n");
>> htmlFile.append("\t<meta http-equiv=\"X-UA-Compatible\"
>> content=\"IE=edge,chrome=1\">\n");
>> htmlFile.append("\t<meta http-equiv=\"Content-Type\"
>> content=\"text/html; charset=utf-8\">\n");
>> - htmlFile.append("\t<link rel=\"stylesheet\" type=\"text/css\"
>> href=\"" + projectName + ".css\">\n");
>> + htmlFile.append("\t<link rel=\"stylesheet\" type=\"text/css\"
>> href=\""
>> + + projectName + ".css\">\n");
>>
>> if (type == "intermediate")
>> {
>> @@ -312,7 +332,7 @@ public class MXMLFlexJSPublisher extends JSGoogPublisher
>> implements
>> htmlFile.append("\t\t\treturn value >>> 0;\n");
>> htmlFile.append("\t\t};\n");
>> htmlFile.append("\t\t\n");
>> -
>> +
>> htmlFile.append("\t\tnew ");
>> htmlFile.append(projectName);
>> htmlFile.append("()");
>> @@ -324,14 +344,14 @@ public class MXMLFlexJSPublisher extends
>> JSGoogPublisher implements
>> writeFile(dirPath + File.separator + "index.html",
>> htmlFile.toString(),
>> false);
>> }
>> -
>> +
>> private void writeCSS(String projectName, String dirPath)
>> - throws IOException
>> + throws IOException
>> {
>> StringBuilder cssFile = new StringBuilder();
>> cssFile.append(project.cssDocument);
>> -
>> - writeFile(dirPath + File.separator + projectName + ".css",
>> cssFile.toString(),
>> - false);
>> +
>> + writeFile(dirPath + File.separator + projectName + ".css",
>> + cssFile.toString(), false);
>> }
>> }
>>
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6a164f39/compiler.jx/
>> src/org/apache/flex/compiler/internal/visitor/mxml/MXMLNodeSwitch.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/compiler.jx/src/org/apache/flex/compiler/internal/visitor/mxml/MXMLNodeSwit
>> ch.java
>> b/compiler.jx/src/org/apache/flex/compiler/internal/visitor/mxml/MXMLNodeSwit
>> ch.java
>> index 51a4e23..2d26374 100644
>> ---
>> a/compiler.jx/src/org/apache/flex/compiler/internal/visitor/mxml/MXMLNodeSwit
>> ch.java
>> +++
>> b/compiler.jx/src/org/apache/flex/compiler/internal/visitor/mxml/MXMLNodeSwit
>> ch.java
>> @@ -34,6 +34,7 @@ import org.apache.flex.compiler.tree.mxml.IMXMLNumberNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLPropertySpecifierNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLScriptNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLStringNode;
>> +import org.apache.flex.compiler.tree.mxml.IMXMLStyleNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLStyleSpecifierNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLUintNode;
>> import org.apache.flex.compiler.visitor.IASNodeStrategy;
>> @@ -106,6 +107,9 @@ public class MXMLNodeSwitch implements IASNodeStrategy
>> case MXMLUintID:
>> visitor.visitUint((IMXMLUintNode) node);
>> break;
>> + case MXMLStyleID:
>> + visitor.visitStyleBlock((IMXMLStyleNode)node);
>> + break;
>>
>> case MXMLApplicationID:
>> case MXMLBindingID:
>> @@ -140,7 +144,6 @@ public class MXMLNodeSwitch implements IASNodeStrategy
>> //case MXMLRepeaterID:
>> case MXMLResourceID:
>> case MXMLStateID:
>> - case MXMLStyleID:
>> case MXMLVectorID:
>> case MXMLWebServiceID:
>> case MXMLWebServiceOperationID:
>>
>> http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/6a164f39/compiler.jx/
>> src/org/apache/flex/compiler/visitor/mxml/IMXMLBlockVisitor.java
>> ----------------------------------------------------------------------
>> diff --git
>> a/compiler.jx/src/org/apache/flex/compiler/visitor/mxml/IMXMLBlockVisitor.jav
>> a
>>
b/compiler.jx/src/org/apache/flex/compiler/visitor/mxml/IMXMLBlockVisitor.jav>>
a
>> index 98c8958..4e347f0 100644
>> ---
>>
a/compiler.jx/src/org/apache/flex/compiler/visitor/mxml/IMXMLBlockVisitor.jav>>
a
>> +++
>>
b/compiler.jx/src/org/apache/flex/compiler/visitor/mxml/IMXMLBlockVisitor.jav>>
a
>> @@ -34,6 +34,7 @@ import org.apache.flex.compiler.tree.mxml.IMXMLNumberNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLPropertySpecifierNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLScriptNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLStringNode;
>> +import org.apache.flex.compiler.tree.mxml.IMXMLStyleNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLStyleSpecifierNode;
>> import org.apache.flex.compiler.tree.mxml.IMXMLUintNode;
>> import org.apache.flex.compiler.units.ICompilationUnit;
>> @@ -72,6 +73,8 @@ public interface IMXMLBlockVisitor extends IBlockVisitor
>>
>> void visitScript(IMXMLScriptNode node);
>>
>> + void visitStyleBlock(IMXMLStyleNode node);
>> +
>> void visitStyleSpecifier(IMXMLStyleSpecifierNode node);
>>
>>
>> //--------------------------------------------------------------------------
>> @@ -91,5 +94,5 @@ public interface IMXMLBlockVisitor extends IBlockVisitor
>>
>> //--------------------------------------------------------------------------
>>
>> void visitLiteral(IMXMLLiteralNode node);
>> -
>> +
>> }
>>
>
>
>
> --
> Ix Multimedia Software
>
> Jan Luykenstraat 27
> 3521 VB Utrecht
>
> T. 06-51952295
> I. www.ixsoftware.nl
--
Alex Harui
Flex SDK Team
Adobe Systems, Inc.
http://blogs.adobe.com/aharui