a634d8ffc7
R=jmesserly@google.com Review URL: https://codereview.chromium.org//20414002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25505 260f80e4-7a28-3924-810f-c04153c831b5
102 lines
2.2 KiB
JavaScript
102 lines
2.2 KiB
JavaScript
/*
|
|
* Copyright 2013 The Polymer Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style
|
|
* license that can be found in the LICENSE file.
|
|
*/
|
|
|
|
(function() {
|
|
|
|
var scope = window.Loader = {};
|
|
var flags = {};
|
|
|
|
// convert url arguments to flags
|
|
|
|
if (!flags.noOpts) {
|
|
location.search.slice(1).split('&').forEach(function(o) {
|
|
o = o.split('=');
|
|
o[0] && (flags[o[0]] = o[1] || true);
|
|
});
|
|
}
|
|
|
|
// process global logFlags
|
|
|
|
parseLogFlags(flags);
|
|
|
|
function load(scopeName) {
|
|
// imports
|
|
|
|
var scope = window[scopeName];
|
|
var entryPointName = scope.entryPointName;
|
|
var processFlags = scope.processFlags;
|
|
|
|
// acquire attributes and base path from entry point
|
|
|
|
var entryPoint = findScript(entryPointName);
|
|
var base = entryPoint.basePath;
|
|
|
|
// acquire common flags
|
|
var flags = Loader.flags;
|
|
|
|
// convert attributes to flags
|
|
var flags = Loader.flags;
|
|
for (var i=0, a; (a=entryPoint.attributes[i]); i++) {
|
|
if (a.name !== 'src') {
|
|
flags[a.name] = a.value || true;
|
|
}
|
|
}
|
|
|
|
// parse log flags into global
|
|
parseLogFlags(flags);
|
|
|
|
// exports
|
|
|
|
scope.basePath = base;
|
|
scope.flags = flags;
|
|
|
|
// process flags for dynamic dependencies
|
|
|
|
if (processFlags) {
|
|
processFlags.call(scope, flags);
|
|
}
|
|
|
|
// post-process imports
|
|
|
|
var modules = scope.modules || [];
|
|
var sheets = scope.sheets || [];
|
|
|
|
// write script tags for dependencies
|
|
|
|
modules.forEach(function(src) {
|
|
document.write('<script src="' + base + src + '"></script>');
|
|
});
|
|
|
|
// write link tags for styles
|
|
|
|
sheets.forEach(function(src) {
|
|
document.write('<link rel="stylesheet" href="' + base + src + '">');
|
|
});
|
|
}
|
|
|
|
// utility method
|
|
|
|
function findScript(fileName) {
|
|
var script = document.querySelector('script[src*="' + fileName + '"]');
|
|
var src = script.attributes.src.value;
|
|
script.basePath = src.slice(0, src.indexOf(fileName));
|
|
return script;
|
|
}
|
|
|
|
function parseLogFlags(flags) {
|
|
var logFlags = window.logFlags = window.logFlags || {};
|
|
if (flags.log) {
|
|
flags.log.split(',').forEach(function(f) {
|
|
logFlags[f] = true;
|
|
});
|
|
}
|
|
}
|
|
|
|
scope.flags = flags;
|
|
scope.load = load;
|
|
|
|
})();
|