styleModule.setNameMappings(nameMappings);
String styleName = generateStyleName(source);
styleModule.setName(styleName);
styleModule.extractStyles(styleSheet, false);
CompilerContext context = new CompilerContext();
CompilationUnit cssCompilationUnit = source.newCompilationUnit(null, context);
VirtualFile generatedFile = generateSourceCodeFile(cssCompilationUnit, styleModule);
Source generatedSource = new Source(generatedFile, source);
// when building a SWC, we want to locate all the asset sources and ask compc to put them in the SWC.
Collection<AtEmbed> atEmbeds = styleModule.getAtEmbeds();
if (atEmbeds != null && configuration.archiveClassesAndAssets())
{
Map<String, LocalFile> archiveFiles = new HashMap<String, LocalFile>();
for (Iterator<AtEmbed> i = atEmbeds.iterator(); i.hasNext(); )
{
AtEmbed e = (AtEmbed) i.next();
String src = (String) e.getAttributes().get(Transcoder.SOURCE);
String original = (String) e.getAttributes().get(Transcoder.ORIGINAL);
if (src != null)
{
archiveFiles.put(original, new LocalFile(new File(src)));
}
}
if (archiveFiles.size() > 0)
{
context.setAttribute(CompilerContext.CSS_ARCHIVE_FILES, archiveFiles);
}
}
// Use MxmlLogAdapter to do filtering, e.g. -generated.as -> .css, as line -> css
// line, etc...
Logger original = ThreadLocalToolkit.getLogger();
LineNumberMap lineNumberMap = styleModule.getLineNumberMap();
Logger adapter = new MxmlLogAdapter(original, lineNumberMap);
ThreadLocalToolkit.setLogger(adapter);
CompilationUnit ascCompilationUnit = delegateSubCompiler.parse1(generatedSource, symbolTable);
if (ascCompilationUnit != null)
{
// transfer includes from the ASC unit to the CSS unit
cssCompilationUnit.getSource().addFileIncludes(ascCompilationUnit.getSource());
context.setAttribute(DELEGATE_UNIT, ascCompilationUnit);
context.setAttribute(LINE_NUMBER_MAP, lineNumberMap);
Source.transferMetaData(ascCompilationUnit, cssCompilationUnit);
Source.transferGeneratedSources(ascCompilationUnit, cssCompilationUnit);
Source.transferDefinitions(ascCompilationUnit, cssCompilationUnit);
Source.transferInheritance(ascCompilationUnit, cssCompilationUnit);
}