1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- 'use strict';
-
- var Node = require('./node');
-
- /**
- * 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){
- 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){
- var err = new Error('attrs.removeAttribute is deprecated and will be removed in v2.0.0');
- console.warn(err.stack);
-
- 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){
- var err = new Error('attrs.getAttribute is deprecated and will be removed in v2.0.0');
- console.warn(err.stack);
-
- 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);
- };
|