ecmarkup
Version:
Custom element definitions and core utilities for markup that specifies ECMAScript and related technologies.
41 lines (40 loc) • 1.86 kB
JavaScript
;
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;