Subversion-Projekte lars-tiefland.ci

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

(function(){
        var window = this       

        // logging Shim from HTML5 Boilerplate
        window.log = function() {
            log.history = log.history || [];   // store logs to an array for reference
            log.history.push(arguments);
            if (this.console) {
                arguments.callee = arguments.callee.caller;
                var newarr = [].slice.call(arguments);
                (typeof console.log === 'object' ? log.apply.call(console.log, console, newarr) : console.log.apply(console, newarr));
            }
        };
        // make it safe to use console.log always
        (function(b) { function c() { } for (var d = "assert,count,debug,dir,dirxml,error,exception,group,groupCollapsed,groupEnd,info,log,timeStamp,profile,profileEnd,time,timeEnd,trace,warn".split(","), a; a = d.pop(); ) { b[a] = b[a] || c } })((function() {try { console.log(); return window.console; } catch (err) {return window.console = {};}})());

    
    
        // curl.js text! plugin
        define('text', function () {
                var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'],
                        // collection of modules that have been written to the built file
                        built = {};
        
                function xhr () {
                        if (typeof XMLHttpRequest !== "undefined") {
                                // rewrite the getXhr method to always return the native implementation
                                xhr = function () { return new XMLHttpRequest(); };
                        }
                        else {
                                // keep trying progIds until we find the correct one, then rewrite the getXhr method
                                // to always return that one.
                                var noXhr = xhr = function () {
                                                throw new Error("getXhr(): XMLHttpRequest not available");
                                        };
                                while (progIds.length > 0 && xhr === noXhr) (function (id) {
                                        try {
                                                new ActiveXObject(id);
                                                xhr = function () { return new ActiveXObject(id); };
                                        }
                                        catch (ex) {}
                                }(progIds.shift()));
                        }
                        return xhr();
                }
        
                function fetchText (url, callback, errback) {
                        var x = xhr();
                        x.open('GET', url, true);
                        x.onreadystatechange = function (e) {
                                if (x.readyState === 4) {
                                        if (x.status < 400) {
                                                callback(x.responseText);
                                        }
                                        else {
                                                errback(new Error('fetchText() failed. status: ' + x.statusText));
                                        }
                                }
                        };
                        x.send(null);
                }
        
                function nameWithExt (name, defaultExt) {
                        return name.lastIndexOf('.') <= name.lastIndexOf('/') ?
                                name + '.' + defaultExt : name;
                }
        
                function error (ex) {
                        if (console) {
                                console.error ? console.error(ex) : console.log(ex.message);
                        }
                }
                function jsEncode (text) {
                        // TODO: hoist the map and regex to the enclosing scope for better performance
                        var map = { 34: '\\"', 13: '\\r', 12: '\\f', 10: '\\n', 9: '\\t', 8: '\\b' };
                        return text.replace(/(["\n\f\t\r\b])/g, function (c) {
                                return map[c.charCodeAt(0)];
                        });
                }
                return {
        
                        load: function (resourceName, req, callback, config) {
                                // remove suffixes (future)
                                // hook up callbacks
                                var cb = callback.resolve || callback,
                                        eb = callback.reject || error;
                                // get the text
                                fetchText(req['toUrl'](resourceName), cb, eb);
                        },
        
                        build: function (writer, fetcher, config) {
                                // writer is a function used to output to the built file
                                // fetcher is a function used to fetch a text file
                                // config is the global config
                                // returns a function that the build tool can use to tell this
                                // plugin to write-out a resource
                                return function write (pluginId, resource, resolver) {
                                        var url, absId, text, output;
                                        url = resolver['toUrl'](nameWithExt(resource, 'html'));
                                        absId = resolver['toAbsMid'](resource);
                                        if (!(absId in built)) {
                                                built[absId] = true;
                                                // fetch text
                                                text = jsEncode(fetcher(url));
                                                // write out a define
                                                output = 'define("' + pluginId + '!' + absId + '", function () {\n' +
                                                        '\treturn "' + text + '";\n' +
                                                '});\n';
                                                writer(output)
                                        }
                                }
                        }
                }
        })
}).call(typeof window !== 'undefined'? window : this)