4 'Core/Core.js', 'Core/Browser.js',
5 'Native/Array.js', 'Native/String.js', 'Native/Function.js', 'Native/Number.js', 'Native/Hash.js',
6 'Class/Class.js', 'Class/Class.Extras.js',
7 'Element/Element.js', 'Element/Element.Style.js', 'Element/Element.Dimensions.js',
8 'Utilities/Selectors.Children.js'
17 var runSpecs = (function(){
19 // Uses String.parseQueryString from MooTools-More
20 // TODO Needs compat for other browsers
21 var parseQueryString = function(string){
22 var vars = string.split(/[&;]/), res = {};
23 if (vars.length) vars.forEach(function(val){
24 var index = val.indexOf('='),
25 keys = index < 0 ? [''] : val.substr(0, index).match(/[^\]\[]+/g),
26 value = decodeURIComponent(val.substr(index + 1)),
28 keys.forEach(function(key, i){
29 var current = obj[key];
30 if(i < keys.length - 1)
31 obj = obj[key] = current || {};
32 else if(current && current._type == 'Array') // JSSpec prototyping
35 obj[key] = current != undefined ? [current, value] : value;
41 var getSpecs = function(queryString){
42 queryString = parseQueryString(queryString);
44 var requestedSpecs = [],
45 specs = queryString.specs;
47 (specs && specs._type == 'Array' ? specs : [specs]).forEach(function(spec){
48 if (Sets[spec] && requestedSpecs.indexOf(spec) == -1) requestedSpecs.push(spec);
51 return requestedSpecs;
54 var loadSpecs = function(obj){
55 for (var i = 0; i < obj.length; i++){
56 SpecNames.push(obj[i]);
58 var specs = Sets[obj[i]];
59 for (var j = 0; j < specs.length; j++){
60 document.write('<scr'+'ipt src="' + obj[i] + '/' + specs[j] + '" type="text/javascript"><\/script>');
65 var requestedSpecs = getSpecs(document.location.search.substr(1));
66 loadSpecs(requestedSpecs);