dynamictemplate
Version:
Δt - async & dynamic templating engine
75 lines (63 loc) • 2.28 kB
JavaScript
(function() {
var __slice = [].slice;
exports.addClass = function() {
var classes, cls, tag, tagclasses, _i, _len, _ref;
tag = arguments[0], classes = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
if (!(tag != null ? tag.attr : void 0)) {
return;
}
tagclasses = ((_ref = tag.attr('class')) != null ? _ref : "").split(' ');
for (_i = 0, _len = classes.length; _i < _len; _i++) {
cls = classes[_i];
if (tagclasses.indexOf(cls) === -1) {
tagclasses.push("" + cls);
}
}
return tag.attr('class', tagclasses.join(' ').trim().replace(/\s\s/g, " "));
};
exports.removeClass = function() {
var classes, cls, i, tag, tagclass, tagclasses, _i, _len, _ref;
tag = arguments[0], classes = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
if (!(tag != null ? tag.attr : void 0)) {
return;
}
tagclass = " " + ((_ref = tag.attr('class')) != null ? _ref : '') + " ";
tagclasses = tagclass.trim().split(' ');
for (_i = 0, _len = classes.length; _i < _len; _i++) {
cls = classes[_i];
i = tagclasses.indexOf(cls);
if (i !== -1) {
tagclasses[i] = '';
tagclass = tagclass.replace(" " + cls + " ", " ");
}
}
return tag.attr('class', tagclass.trim());
};
exports.compose = function() {
var functions;
functions = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
if (functions.length === 1 && Array.isArray(functions[0])) {
functions = functions[0];
}
return function() {
var args, fun, _i, _len;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
for (_i = 0, _len = functions.length; _i < _len; _i++) {
fun = functions[_i];
fun.apply(this, args);
}
return this;
};
};
exports.partialize = function() {
var create, moargs;
create = arguments[0], moargs = 2 <= arguments.length ? __slice.call(arguments, 1) : [];
return function() {
var args, partial;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
partial = create.call.apply(create, [this].concat(__slice.call(moargs), __slice.call(args)));
this.partial(partial);
return partial;
};
};
}).call(this);