Underscore Conflict Test

by paulftw

HTML

<script src="//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.0/underscore.js"></script>

JavaScript

var gettext = function(s) {
    var res = '';
    for (var i = 0; i < s.length; i++) {
        res += i%2 ? s[i].toLowerCase() : s[i].toUpperCase();
    }
    return res;
};


(function(underscore, gettext) {
    var zcombinator = function(obj) {
        if (typeof obj == "string") {
            return gettext(obj);
        } else {
            return underscore(obj);
        }
    };
    underscore.extend(zcombinator, underscore);
    
    window._ = zcombinator;
})(_, gettext);


console.log('Must print noisy-case: ',
            _('Text Translated to Greek')
           );

console.log('List of squares',
            _.map([1, 2, 3, 4, 5], function(x) {return x*x;})
           );

console.log('More squares: ',
            _([1,2,3,4,5]).map(function(x) {return x*x;})
           );