Builder.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. /*
  2. Script: Builder.js
  3. Automatically includes MooTools files right from the project folder.
  4. License:
  5. MIT-style license.
  6. Note:
  7. If you use this script in your own page, you must be out of your mind.
  8. */
  9. var Builder = {
  10. root: '../',
  11. paths: {
  12. source: 'Source',
  13. docs: 'Source'
  14. },
  15. included: {
  16. source: {},
  17. docs: {}
  18. },
  19. scripts: {
  20. source: {
  21. 'Core' : ['Mif.Tree', 'Mif.Tree.Node', 'Mif.Tree.Hover', 'Mif.Tree.Selection', 'Mif.Tree.Load', 'Mif.Tree.Draw'],
  22. 'More' : ['Mif.Tree.KeyNav', 'Mif.Tree.Sort', 'Mif.Tree.Transform', 'Mif.Tree.Drag', 'Mif.Tree.Drag.Element', 'Mif.Tree.Checkbox', 'Mif.Tree.Rename', 'Mif.Tree.CookieStorage']
  23. },
  24. docs: {
  25. 'Core' : ['Mif.Tree', 'Mif.Tree.Node', 'Mif.Tree.Hover', 'Mif.Tree.Selection', 'Mif.Tree.Load', 'Mif.Tree.Draw'],
  26. 'More' : ['Mif.Tree.KeyNav', 'Mif.Tree.Sort', 'Mif.Tree.Transform', 'Mif.Tree.Drag', 'Mif.Tree.Checkbox', 'Mif.Tree.Rename', 'Mif.Tree.CookieStorage']
  27. }
  28. },
  29. initialize: function(root){
  30. if (root) this.root = root;
  31. this.includeType('source');
  32. return this;
  33. },
  34. getFolder: function(type, file){
  35. var scripts = this.scripts[type];
  36. for (var folder in scripts){
  37. for (var i = 0; i < scripts[folder].length; i++){
  38. var script = scripts[folder][i];
  39. if (script == file) return folder;
  40. }
  41. }
  42. return false;
  43. },
  44. getRequest: function(){
  45. var pairs = window.location.search.substring(1).split('&');
  46. var obj = {};
  47. for (var i = 0, l = pairs.length; i < l; i++){
  48. var pair = pairs[i].split('=');
  49. obj[pair[0]] = pair[1];
  50. }
  51. return obj;
  52. },
  53. includeFile: function(type, folder, file){
  54. folder = folder || this.getFolder(type, file);
  55. if (!folder) return false;
  56. this.included[type][folder] = this.included[type][folder] || [];
  57. var files = this.included[type][folder];
  58. for (var i = 0; i < files.length; i++){
  59. if (files[i] == file) return false;
  60. }
  61. this.included[type][folder].push(file);
  62. return document.writeln('\t<script type="text/javascript" src="' + this.root + this.paths[type] + '/' + folder + '/' + file + '.js"></script>');
  63. },
  64. includeFolder: function(type, folder){
  65. var scripts = this.scripts[type][folder];
  66. for (var i = 0, l = scripts.length; i < l; i++) this.includeFile(type, folder, scripts[i]);
  67. },
  68. includeType: function(type){
  69. for (var folder in this.scripts[type]) this.includeFolder(type, folder);
  70. },
  71. includeRequest: function(type){
  72. var req = this.getRequest();
  73. if (!req.files && !req.folders) return false;
  74. var files = (req.files) ? req.files.split('+') : [];
  75. var folders = (req.folders) ? req.folders.split('+') : [];
  76. for (var j = 0; j < files.length; j++) this.includeFile(type, null, files[j]);
  77. for (var i = 0; i < folders.length; i++) this.includeFolder(type, folders[i]);
  78. return true;
  79. }
  80. };