* Starting to work on the new specs for MooTools-Core
[mootools/dkf.git] / Specs / MooToolsSpecLoader.js
blobc17adaa47006f63c507035bfb5c977a8e5511e47
1 var Sets = {
2         
3         '1.2public': [
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'
9         ],
10         
11         '1.2private': [
12                 
13         ]
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)),
27                         obj = res;
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
33                                 current.push(value);
34                         else
35                                 obj[key] = current != undefined ? [current, value] : value;
36                 });
37         });
38         return res;
41 var getSpecs = function(queryString){
42         queryString = parseQueryString(queryString);
43         
44         var requestedSpecs = [],
45                 specs = queryString.specs;
46         
47         (specs && specs._type == 'Array' ? specs : [specs]).forEach(function(spec){
48                 if (Sets[spec] && requestedSpecs.indexOf(spec) == -1) requestedSpecs.push(spec);
49         });
50         
51         return requestedSpecs;
54 var loadSpecs = function(obj){
55         for (var i = 0; i < obj.length; i++){
56                 SpecNames.push(obj[i]);
57                 
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>');
61                 }
62         }
65 var requestedSpecs = getSpecs(document.location.search.substr(1));
66 loadSpecs(requestedSpecs);
68 });