(function(global) {
global.define = function(moduleId, importIds, body) { var resolveRelativeModuleId = function(targetId) { var targetParts = targetId.split(/\//), basename = targetParts.pop(); if ((targetParts.length == 0) || (targetParts[0] != '.' && targetParts[0] != '..')) { return targetId; } if (targetParts[0] == '.') { targetParts.shift(); } var fromParts = moduleId.split(/\//); fromParts.pop(); while (targetParts.length > 0 && targetParts[0] == '..') { targetParts.shift(); if (fromParts.length > 0) { fromParts.pop(); } } var parts = fromParts.concat(targetParts); return (parts.length == 0) ? basename : parts.join('/') + '/' + basename; }; var toVariableName = function(moduleId) { return '$__' + encodeURIComponent(moduleId.replace(/^\.\//, '')) .replace(/%|-/, '') + '__'; }; importIds.shift(); var exports = {}, imports = [exports], module = {exports: null}; for (var i = 0; i < importIds.length; i++) { if (importIds[i] == 'module') { imports.push(module); continue; } var varName = toVariableName(resolveRelativeModuleId(importIds[i])); imports.push(global[varName]); } body.apply(global, imports); if (module.exports != null) { exports = module.exports; } global[toVariableName(moduleId)] = exports; };
})(this);