Skip to content

Commit 2302bd2

Browse files
committed
Initial support for named AMD modules.
1 parent a54f974 commit 2302bd2

File tree

4 files changed

+22
-2
lines changed

4 files changed

+22
-2
lines changed

src/compiler/emitter.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2096,7 +2096,15 @@ module ts {
20962096
function emitAMDModule(node: SourceFile, startIndex: number) {
20972097
var imports = getExternalImportDeclarations(node);
20982098
writeLine();
2099-
write("define([\"require\", \"exports\"");
2099+
write("define(");
2100+
2101+
if(node.amdModuleName) {
2102+
write("\"" + node.amdModuleName + "\"");
2103+
write(", ");
2104+
}
2105+
2106+
write("[\"require\", \"exports\"");
2107+
21002108
forEach(imports, imp => {
21012109
write(", ");
21022110
emitLiteral(imp.externalModuleName);

src/compiler/parser.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ module ts {
2020
interface ReferenceComments {
2121
referencedFiles: FileReference[];
2222
amdDependencies: string[];
23+
amdModuleName: string;
2324
}
2425

2526
export function getSourceFileOfNode(node: Node): SourceFile {
@@ -4218,6 +4219,7 @@ module ts {
42184219
function processReferenceComments(): ReferenceComments {
42194220
var referencedFiles: FileReference[] = [];
42204221
var amdDependencies: string[] = [];
4222+
var amdModuleName: string;
42214223
commentRanges = [];
42224224
token = scanner.scan();
42234225

@@ -4237,6 +4239,12 @@ module ts {
42374239
}
42384240
}
42394241
else {
4242+
var amdModuleNameRegEx = /^\/\/\/\s*<amd-module\s+name\s*=\s*('|")(.+?)\1/gim;
4243+
var amdModuleNameMatchResult = amdModuleNameRegEx.exec(comment);
4244+
if(amdModuleNameMatchResult) {
4245+
amdModuleName = amdModuleNameMatchResult[2];
4246+
}
4247+
42404248
var amdDependencyRegEx = /^\/\/\/\s*<amd-dependency\s+path\s*=\s*('|")(.+?)\1/gim;
42414249
var amdDependencyMatchResult = amdDependencyRegEx.exec(comment);
42424250
if (amdDependencyMatchResult) {
@@ -4247,7 +4255,8 @@ module ts {
42474255
commentRanges = undefined;
42484256
return {
42494257
referencedFiles: referencedFiles,
4250-
amdDependencies: amdDependencies
4258+
amdDependencies: amdDependencies,
4259+
amdModuleName: amdModuleName
42514260
};
42524261
}
42534262

@@ -4276,6 +4285,7 @@ module ts {
42764285
var referenceComments = processReferenceComments();
42774286
file.referencedFiles = referenceComments.referencedFiles;
42784287
file.amdDependencies = referenceComments.amdDependencies;
4288+
file.amdModuleName = referenceComments.amdModuleName;
42794289
file.statements = parseList(ParsingContext.SourceElements, /*checkForStrictMode*/ true, parseSourceElement);
42804290
file.externalModuleIndicator = getExternalModuleIndicator();
42814291
file.nodeCount = nodeCount;

src/compiler/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -630,6 +630,7 @@ module ts {
630630
getLineAndCharacterFromPosition(position: number): { line: number; character: number };
631631
getPositionFromLineAndCharacter(line: number, character: number): number;
632632
amdDependencies: string[];
633+
amdModuleName: string;
633634
referencedFiles: FileReference[];
634635
syntacticErrors: Diagnostic[];
635636
semanticErrors: Diagnostic[];

src/services/services.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,7 @@ module ts {
668668
public getLineAndCharacterFromPosition(position: number): { line: number; character: number } { return null; }
669669
public getPositionFromLineAndCharacter(line: number, character: number): number { return -1; }
670670
public amdDependencies: string[];
671+
public amdModuleName: string;
671672
public referencedFiles: FileReference[];
672673
public syntacticErrors: Diagnostic[];
673674
public semanticErrors: Diagnostic[];

0 commit comments

Comments
 (0)