tag/ul.js

const Tag = require('./tag').Tag;
const LiTag = require("./li").LiTag;

/**
 * @typedef UlTag
 * @extends Tag
 * @property {Array<LiTag>} children
 * @property {undefined} attrs
 */

/**
 * @param {Array<LiTag>} children
 * @constructor
 */
function UlTag(children) {
    if (children.length === 0) {
        throw Error('<ul> must have at least 1 child')
    }

    children.forEach(function (child) {
        if (!(child instanceof LiTag)) {
            throw Error('<ul> can have only <li> children')
        }
    });

    this.children = children;
}

UlTag.__proto__ = Tag;
UlTag.tagName = 'ul';

UlTag.prototype.toString = function ulTagToString() {
    return this.children.map(function (child) {
        return child.toString();
    }).join('\n');
};

exports.UlTag = UlTag;