UNPKG

polyfill-service

Version:
80 lines (61 loc) 1.62 kB
var _DOMTokenList = (function (global) { function tokenize(token) { if (/^-?[_a-zA-Z]+[_a-zA-Z0-9-]*$/.test(token)) { return String(token); } else { throw new Error('InvalidCharacterError: DOM Exception 5'); } } function toObject(self) { for (var index = -1, object = {}, element; element = self[++index];) { object[element] = true; } return object; } function fromObject(self, object) { var array = [], token; for (token in object) { if (object[token]) { array.push(token); } } [].splice.apply(self, [0, self.length].concat(array)); } var DTL = function() {}; DTL.prototype = { constructor: DTL, item: function item(index) { return this[parseFloat(index)] || null; }, length: Array.prototype.length, toString: function toString() { return [].join.call(this, ' '); }, add: function add() { for (var object = toObject(this), index = 0, token; index in arguments; ++index) { token = tokenize(arguments[index]); object[token] = true; } fromObject(this, object); }, contains: function contains(token) { return token in toObject(this); }, remove: function remove() { for (var object = toObject(this), index = 0, token; index in arguments; ++index) { token = tokenize(arguments[index]); object[token] = false; } fromObject(this, object); }, toggle: function toggle(token) { var object = toObject(this), contains = 1 in arguments ? !arguments[1] : tokenize(token) in object; object[token] = !contains; fromObject(this, object); return !contains; } }; return DTL; })(this);