UNPKG

linkedom

Version:

A triple-linked lists based DOM implementation

42 lines (36 loc) 1.05 kB
import {DOCUMENT_TYPE_NODE} from '../shared/constants.js'; import {documentTypeAsJSON} from '../shared/jsdon.js'; import {Node} from './node.js'; /** * @implements globalThis.DocumentType */ export class DocumentType extends Node { constructor(ownerDocument, name, publicId = '', systemId = '') { super(ownerDocument, '#document-type', DOCUMENT_TYPE_NODE); this.name = name; this.publicId = publicId; this.systemId = systemId; } cloneNode() { const {ownerDocument, name, publicId, systemId} = this; return new DocumentType(ownerDocument, name, publicId, systemId); } toString() { const {name, publicId, systemId} = this; const hasPublic = 0 < publicId.length; const str = [name]; if (hasPublic) str.push('PUBLIC', `"${publicId}"`); if (systemId.length) { if (!hasPublic) str.push('SYSTEM'); str.push(`"${systemId}"`); } return `<!DOCTYPE ${str.join(' ')}>`; } toJSON() { const json = []; documentTypeAsJSON(this, json); return json; } }