todomvc
Version:
> Helping you select an MV\* framework
61 lines (48 loc) • 1.62 kB
JavaScript
(function (define) {
define(function (require) {
"use strict";
var mapClasses, defaultClasses, defaultOtherwise;
mapClasses = require('./mapClasses');
defaultClasses = {
0: 'zero',
1: 'one'
};
defaultOtherwise = 'many';
/**
* Creates a dom class mapper (see mapClasses) that maps numbers to
* a cardinality class, such as 0 -> 'zero', 1 -> 'one', 2 -> 'many'.
* An optional prefix may be supplied to allow specialized class names,
* such as 0 -> 'items-in-cart-zero', 1 -> 'items-in-cart-one', 2 -> 'items-in-cart-many'
*
* @param options {Object|String} if a String, it is used directly as the prefix.
* @param [options.prefix] {String} Prefix to prepend to cardinality classes, a '-'
* will be appended to this when forming the cardinality class.
* @param [options.otherwise] {String} suffix to use when the input number
* is not 0 or 1, defaults to "many". This should *not* already contain the prefix.
*
* @return {Function} function that will map a number to a css class name.
*/
return function(options) {
var classMap, prefix, key;
classMap = {};
prefix = '';
if(!options) options = {};
if(typeof options == 'string') {
prefix = options + '-';
options = {};
} else if(options.prefix) {
prefix = options.prefix + '-';
}
for(key in defaultClasses) {
classMap[key] = prefix + defaultClasses[key];
}
options.otherwise = prefix + defaultOtherwise;
options.map = classMap;
return mapClasses(options);
}
});
}(
typeof define == 'function' && define.amd
? define
: function (factory) { module.exports = factory(require); }
));