mirror of
https://github.com/systemjs/systemjs.git
synced 2026-01-25 14:57:38 +00:00
46 lines
1.1 KiB
JavaScript
46 lines
1.1 KiB
JavaScript
/*
|
|
SystemJS map support
|
|
|
|
Provides map configuration through
|
|
System.map['jquery'] = 'some/module/map'
|
|
*/
|
|
(function() {
|
|
var separatorRegEx = /[\/:]/;
|
|
|
|
System.map = {};
|
|
|
|
// given a relative-resolved module name apply the map configuration
|
|
var applyMap = function(name) {
|
|
|
|
var curMatch = '';
|
|
var curMatchSuffix = '';
|
|
|
|
var nameParts = name.split(separatorRegEx);
|
|
|
|
main:
|
|
for (var p in System.map) {
|
|
var matchParts = p.split(separatorRegEx);
|
|
if (matchParts.length > nameParts.length)
|
|
continue;
|
|
|
|
for (var i = 0; i < matchParts.length; i++)
|
|
if (nameParts[i] != matchParts[i])
|
|
continue main;
|
|
|
|
if (p.length <= curMatch.length)
|
|
continue;
|
|
|
|
curMatch = p;
|
|
curMatchSuffix = name.substr(nameParts.splice(0, matchParts.length).join('/').length);
|
|
}
|
|
if (curMatch)
|
|
name = System.map[curMatch] + curMatchSuffix;
|
|
|
|
return name;
|
|
}
|
|
|
|
var systemNormalize = System.normalize;
|
|
System.normalize = function(name, parentName, parentAddress) {
|
|
return systemNormalize(applyMap(name), parentName, parentAddress);
|
|
}
|
|
})(); |