UNPKG

todomvc

Version:

> Helping you select an MV\* framework

61 lines (48 loc) 1.62 kB
(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); } ));