45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
|
(function () {
|
||
|
|
||
|
function parse(name) {
|
||
|
var parts = name.split('?'),
|
||
|
index = parseInt(parts[0], 10),
|
||
|
choices = parts[1].split(':'),
|
||
|
choice = choices[index];
|
||
|
|
||
|
return {
|
||
|
index: index,
|
||
|
choices: choices,
|
||
|
choice: choice
|
||
|
};
|
||
|
}
|
||
|
|
||
|
define({
|
||
|
normalize: function (name, normalize) {
|
||
|
var parsed = parse(name),
|
||
|
choices = parsed.choices;
|
||
|
|
||
|
//Normalize each path choice.
|
||
|
for (i = 0; i < choices.length; i++) {
|
||
|
choices[i] = normalize(choices[i]);
|
||
|
}
|
||
|
|
||
|
return parsed.index + '?' + choices.join(':');
|
||
|
},
|
||
|
|
||
|
load: function (name, req, load, config) {
|
||
|
req([parse(name).choice], function (value) {
|
||
|
load(value);
|
||
|
});
|
||
|
},
|
||
|
|
||
|
//This is strictly not necessary (and *not* recommended),
|
||
|
//but just doing it as a test.
|
||
|
write: function (pluginName, moduleName, write) {
|
||
|
var parsed = parse(moduleName);
|
||
|
write("define('" + pluginName + "!" + moduleName +
|
||
|
"', ['" + parsed.choice + "'], function (value) { return value;});\n");
|
||
|
}
|
||
|
});
|
||
|
|
||
|
}());
|