testing/mochitest/MochiKit/MochiKit.js

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     1 /***
     3 MochiKit.MochiKit 1.4
     5 See <http://mochikit.com/> for documentation, downloads, license, etc.
     7 (c) 2005 Bob Ippolito.  All rights Reserved.
     9 ***/
    11 if (typeof(MochiKit) == 'undefined') {
    12     MochiKit = {};
    13 }
    15 if (typeof(MochiKit.MochiKit) == 'undefined') {
    16     /** @id MochiKit.MochiKit */
    17     MochiKit.MochiKit = {};
    18 }
    20 MochiKit.MochiKit.NAME = "MochiKit.MochiKit";
    21 MochiKit.MochiKit.VERSION = "1.4";
    22 MochiKit.MochiKit.__repr__ = function () {
    23     return "[" + this.NAME + " " + this.VERSION + "]";
    24 };
    26 /** @id MochiKit.MochiKit.toString */
    27 MochiKit.MochiKit.toString = function () {
    28     return this.__repr__();
    29 };
    31 /** @id MochiKit.MochiKit.SUBMODULES */
    32 MochiKit.MochiKit.SUBMODULES = [
    33     "Base",
    34     "Iter",
    35     "Logging",
    36     "DateTime",
    37     "Format",
    38     "Async",
    39     "DOM",
    40     "Style",
    41     "LoggingPane",
    42     "Color",
    43     "Signal",
    44     "Visual"
    45 ];
    47 if (typeof(JSAN) != 'undefined' || typeof(dojo) != 'undefined') {
    48     if (typeof(dojo) != 'undefined') {
    49         dojo.provide('MochiKit.MochiKit');
    50         dojo.require("MochiKit.*");
    51     }
    52     if (typeof(JSAN) != 'undefined') {
    53         (function (lst) {
    54             for (var i = 0; i < lst.length; i++) {
    55                 JSAN.use("MochiKit." + lst[i], []);
    56             }
    57         })(MochiKit.MochiKit.SUBMODULES);
    58     }
    59     (function () {
    60         var extend = MochiKit.Base.extend;
    61         var self = MochiKit.MochiKit;
    62         var modules = self.SUBMODULES;
    63         var EXPORT = [];
    64         var EXPORT_OK = [];
    65         var EXPORT_TAGS = {};
    66         var i, k, m, all;
    67         for (i = 0; i < modules.length; i++) {
    68             m = MochiKit[modules[i]];
    69             extend(EXPORT, m.EXPORT);
    70             extend(EXPORT_OK, m.EXPORT_OK);
    71             for (k in m.EXPORT_TAGS) {
    72                 EXPORT_TAGS[k] = extend(EXPORT_TAGS[k], m.EXPORT_TAGS[k]);
    73             }
    74             all = m.EXPORT_TAGS[":all"];
    75             if (!all) {
    76                 all = extend(null, m.EXPORT, m.EXPORT_OK);
    77             }
    78             var j;
    79             for (j = 0; j < all.length; j++) {
    80                 k = all[j];
    81                 self[k] = m[k];
    82             }
    83         }
    84         self.EXPORT = EXPORT;
    85         self.EXPORT_OK = EXPORT_OK;
    86         self.EXPORT_TAGS = EXPORT_TAGS;
    87     }());
    89 } else {
    90     if (typeof(MochiKit.__compat__) == 'undefined') {
    91         MochiKit.__compat__ = true;
    92     }
    93     (function () {
    94         if (typeof(document) == "undefined") {
    95             return;
    96         }
    97         var scripts = document.getElementsByTagName("script");
    98         var kXULNSURI = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
    99         var base = null;
   100         var baseElem = null;
   101         var allScripts = {};
   102         var i;
   103         for (i = 0; i < scripts.length; i++) {
   104             var src = scripts[i].getAttribute("src");
   105             if (!src) {
   106                 continue;
   107             }
   108             allScripts[src] = true;
   109             if (src.match(/MochiKit.js$/)) {
   110                 base = src.substring(0, src.lastIndexOf('MochiKit.js'));
   111                 baseElem = scripts[i];
   112             }
   113         }
   114         if (base === null) {
   115             return;
   116         }
   117         var modules = MochiKit.MochiKit.SUBMODULES;
   118         for (var i = 0; i < modules.length; i++) {
   119             if (MochiKit[modules[i]]) {
   120                 continue;
   121             }
   122             var uri = base + modules[i] + '.js';
   123             if (uri in allScripts) {
   124                 continue;
   125             }
   126             if (document.documentElement &&
   127                 document.documentElement.namespaceURI == kXULNSURI) {
   128                 // XUL
   129                 var s = document.createElementNS(kXULNSURI, 'script');
   130                 s.setAttribute("id", "MochiKit_" + base + modules[i]);
   131                 s.setAttribute("src", uri);
   132                 s.setAttribute("type", "application/x-javascript");
   133                 baseElem.parentNode.appendChild(s);
   134             } else {
   135                 // HTML
   136                 /*
   137                     DOM can not be used here because Safari does
   138                     deferred loading of scripts unless they are
   139                     in the document or inserted with document.write
   141                     This is not XHTML compliant.  If you want XHTML
   142                     compliance then you must use the packed version of MochiKit
   143                     or include each script individually (basically unroll
   144                     these document.write calls into your XHTML source)
   146                 */
   147                 document.write('<script src="' + uri +
   148                     '" type="text/javascript"></script>');
   149             }
   150         };
   151     })();
   152 }

mercurial