This reverts commit c3fafa0651afd07b6fb5905b426121b2467e16c3. The symbols should be configured at the component level and not be global to the compiler.
83 lines
3.5 KiB
TypeScript
83 lines
3.5 KiB
TypeScript
import {print, isPresent, IS_DART} from '../src/facade/lang';
|
|
import {OutputEmitter} from '@angular/compiler/src/output/abstract_emitter';
|
|
import {Console} from '../core_private';
|
|
|
|
import {
|
|
OfflineCompiler,
|
|
NormalizedComponentWithViewDirectives,
|
|
SourceModule
|
|
} from '@angular/compiler/src/offline_compiler';
|
|
import {TemplateParser} from '@angular/compiler/src/template_parser';
|
|
import {Parser} from '@angular/compiler/src/expression_parser/parser';
|
|
import {Lexer} from '@angular/compiler/src/expression_parser/lexer';
|
|
import {HtmlParser} from '@angular/compiler/src/html_parser';
|
|
import {StyleCompiler} from '@angular/compiler/src/style_compiler';
|
|
import {ViewCompiler} from '@angular/compiler/src/view_compiler/view_compiler';
|
|
import {DirectiveNormalizer} from '@angular/compiler/src/directive_normalizer';
|
|
import {CompilerConfig} from '@angular/compiler/src/config';
|
|
import {createOfflineCompileUrlResolver} from '@angular/compiler/src/url_resolver';
|
|
import {MockSchemaRegistry} from '../testing/schema_registry_mock';
|
|
import {MODULE_SUFFIX} from '@angular/compiler/src/util';
|
|
import {MockXHR} from '../testing/xhr_mock';
|
|
import {ImportGenerator} from '@angular/compiler/src/output/path_util';
|
|
|
|
import {
|
|
CompileDirectiveMetadata,
|
|
CompileTypeMetadata,
|
|
CompileTemplateMetadata
|
|
} from '@angular/compiler/src/compile_metadata';
|
|
|
|
|
|
export class CompA { user: string; }
|
|
|
|
var THIS_MODULE_PATH = `asset:@angular/lib/compiler/test`;
|
|
var THIS_MODULE_URL = `${THIS_MODULE_PATH}/offline_compiler_util${MODULE_SUFFIX}`;
|
|
|
|
export var compAMetadata = CompileDirectiveMetadata.create({
|
|
isComponent: true,
|
|
selector: 'comp-a',
|
|
type: new CompileTypeMetadata(
|
|
{name: 'CompA', moduleUrl: THIS_MODULE_URL, runtime: CompA, diDeps: []}),
|
|
template: new CompileTemplateMetadata({
|
|
templateUrl: './offline_compiler_compa.html',
|
|
styles: ['.redStyle { color: red; }'],
|
|
styleUrls: ['./offline_compiler_compa.css']
|
|
})
|
|
});
|
|
|
|
function _createOfflineCompiler(xhr: MockXHR, emitter: OutputEmitter): OfflineCompiler {
|
|
var urlResolver = createOfflineCompileUrlResolver();
|
|
xhr.when(`${THIS_MODULE_PATH}/offline_compiler_compa.html`, 'Hello World {{user}}!');
|
|
var htmlParser = new HtmlParser();
|
|
var config = new CompilerConfig(true, true, true);
|
|
var normalizer = new DirectiveNormalizer(xhr, urlResolver, htmlParser, new CompilerConfig(true, true, true));
|
|
return new OfflineCompiler(
|
|
normalizer, new TemplateParser(new Parser(new Lexer()), new MockSchemaRegistry({}, {}),
|
|
htmlParser, new Console(), []),
|
|
new StyleCompiler(urlResolver), new ViewCompiler(new CompilerConfig(true, true, true)),
|
|
emitter, xhr);
|
|
}
|
|
|
|
export function compileComp(emitter: OutputEmitter,
|
|
comp: CompileDirectiveMetadata): Promise<string> {
|
|
var xhr = new MockXHR();
|
|
var compiler = _createOfflineCompiler(xhr, emitter);
|
|
var result = compiler.normalizeDirectiveMetadata(comp).then((normComp) => {
|
|
return compiler.compileTemplates([new NormalizedComponentWithViewDirectives(normComp, [], [])])
|
|
.source;
|
|
});
|
|
xhr.flush();
|
|
return result;
|
|
}
|
|
|
|
export class SimpleJsImportGenerator implements ImportGenerator {
|
|
getImportPath(moduleUrlStr: string, importedUrlStr: string): string {
|
|
// var moduleAssetUrl = ImportGenerator.parseAssetUrl(moduleUrlStr);
|
|
var importedAssetUrl = ImportGenerator.parseAssetUrl(importedUrlStr);
|
|
if (isPresent(importedAssetUrl)) {
|
|
return `${importedAssetUrl.packageName}/${importedAssetUrl.modulePath}`;
|
|
} else {
|
|
return importedUrlStr;
|
|
}
|
|
}
|
|
} |