UNPKG

ecmarkup

Version:

Custom element definitions and core utilities for markup that specifies ECMAScript and related technologies.

41 lines (40 loc) 1.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Builder_1 = require("./Builder"); const Xref_1 = require("./Xref"); class ConcreteMethodDfns extends Builder_1.default { constructor(spec, node, _for, parentClause) { super(spec, node); this._clauses = []; this._for = _for; this._parentClause = parentClause; } static async enter({ node, spec, clauseStack }) { const _for = node.getAttribute('for'); const parentClause = clauseStack[clauseStack.length - 1]; const concreteMethodDfns = new ConcreteMethodDfns(spec, node, _for, parentClause); spec._concreteMethodDfnsLists.push(concreteMethodDfns); } build() { var _a, _b; const { spec, _parentClause: parentClause } = this; const namespace = parentClause ? parentClause.namespace : spec.namespace; const definitions = (_a = spec.biblio.byAbstractMethodAoid(this._for, namespace)) !== null && _a !== void 0 ? _a : []; const ul = spec.doc.createElement('ul'); for (const def of definitions) { const id = (_b = def.id) !== null && _b !== void 0 ? _b : def.refId; const declaration = spec.biblio.byId(id); const li = spec.doc.createElement('li'); const xrefNode = spec.doc.createElement('emu-xref'); xrefNode.setAttribute('href', `#${id}`); xrefNode.textContent = `${declaration.number} ${def.for}`; li.appendChild(xrefNode); ul.appendChild(li); const xref = new Xref_1.default(spec, xrefNode, parentClause, namespace, xrefNode.getAttribute('href'), null); spec._xrefs.push(xref); } this.node.appendChild(ul); } } ConcreteMethodDfns.elements = ['EMU-CONCRETE-METHOD-DFNS']; exports.default = ConcreteMethodDfns;