A Twitch.tv viewer reward and games system.
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
'use strict';
var Node = require('./node'); var Block = require('./block');
/** * Initialize a `Attrs` node. * * @api public */
var Attrs = module.exports = function Attrs() { this.attributeNames = []; this.attrs = []; this.attributeBlocks = []; };
// Inherit from `Node`.
Attrs.prototype = Object.create(Node.prototype); Attrs.prototype.constructor = Attrs;
Attrs.prototype.type = 'Attrs';
/** * Set attribute `name` to `val`, keep in mind these become * part of a raw js object literal, so to quote a value you must * '"quote me"', otherwise or example 'user.name' is literal JavaScript. * * @param {String} name * @param {String} val * @param {Boolean} escaped * @return {Tag} for chaining * @api public */
Attrs.prototype.setAttribute = function(name, val, escaped){ this.attributeNames = this.attributeNames || []; if (name !== 'class' && this.attributeNames.indexOf(name) !== -1) { throw new Error('Duplicate attribute "' + name + '" is not allowed.'); } this.attributeNames.push(name); this.attrs.push({ name: name, val: val, escaped: escaped }); return this; };
/** * Remove attribute `name` when present. * * @param {String} name * @api public */
Attrs.prototype.removeAttribute = function(name){ for (var i = 0, len = this.attrs.length; i < len; ++i) { if (this.attrs[i] && this.attrs[i].name == name) { delete this.attrs[i]; } } };
/** * Get attribute value by `name`. * * @param {String} name * @return {String} * @api public */
Attrs.prototype.getAttribute = function(name){ for (var i = 0, len = this.attrs.length; i < len; ++i) { if (this.attrs[i] && this.attrs[i].name == name) { return this.attrs[i].val; } } };
Attrs.prototype.addAttributes = function (src) { this.attributeBlocks.push(src); };
|