Files
angular__angular/modules/angular2/src/compiler/source_module.ts
T
Tobias Bosch 457b689bf0 feat(compiler): add TemplateCompiler
TemplateCompiler is the entry point to the new compiler

Related to #3605
Closes #4220
2015-09-17 04:24:15 +00:00

40 lines
1.1 KiB
TypeScript

import {StringWrapper, isBlank} from 'angular2/src/core/facade/lang';
var MODULE_REGEXP = /#MODULE\[([^\]]*)\]/g;
export function moduleRef(moduleId): string {
return `#MODULE[${moduleId}]`;
}
export class SourceModule {
constructor(public moduleId: string, public source: string) {}
getSourceWithImports(): SourceWithImports {
var moduleAliases = {};
var imports: string[][] = [];
var newSource = StringWrapper.replaceAllMapped(this.source, MODULE_REGEXP, (match) => {
var moduleId = match[1];
var alias = moduleAliases[moduleId];
if (isBlank(alias)) {
if (moduleId == this.moduleId) {
alias = '';
} else {
alias = `import${imports.length}`;
imports.push([moduleId, alias]);
}
moduleAliases[moduleId] = alias;
}
return alias.length > 0 ? `${alias}.` : '';
});
return new SourceWithImports(newSource, imports);
}
}
export class SourceExpression {
constructor(public declarations: string[], public expression: string) {}
}
export class SourceWithImports {
constructor(public source: string, public imports: string[][]) {}
}