Sha256: 88ac40c9c076bea44c0e1642df96c765c200c9573dd10a3519ee7c02ad7230ca
Contents?: true
Size: 1.99 KB
Versions: 26
Compression:
Stored size: 1.99 KB
Contents
"use strict"; const xnv = require("xml-name-validator"); const DOMException = require("../generated/DOMException"); const { XML_NS, XMLNS_NS } = require("../helpers/namespaces"); // https://dom.spec.whatwg.org/#validate exports.name = (globalObject, name) => { if (!xnv.name(name)) { throw DOMException.create(globalObject, [`"${name}" did not match the Name production`, "InvalidCharacterError"]); } }; exports.qname = (globalObject, qname) => { if (!xnv.qname(qname)) { throw DOMException.create(globalObject, [`"${qname}" did not match the QName production`, "InvalidCharacterError"]); } }; exports.validateAndExtract = (globalObject, namespace, qualifiedName) => { if (namespace === "") { namespace = null; } exports.qname(globalObject, qualifiedName); let prefix = null; let localName = qualifiedName; const colonIndex = qualifiedName.indexOf(":"); if (colonIndex !== -1) { prefix = qualifiedName.substring(0, colonIndex); localName = qualifiedName.substring(colonIndex + 1); } if (prefix !== null && namespace === null) { throw DOMException.create(globalObject, [ "A namespace was given but a prefix was also extracted from the qualifiedName", "NamespaceError" ]); } if (prefix === "xml" && namespace !== XML_NS) { throw DOMException.create(globalObject, [ "A prefix of \"xml\" was given but the namespace was not the XML namespace", "NamespaceError" ]); } if ((qualifiedName === "xmlns" || prefix === "xmlns") && namespace !== XMLNS_NS) { throw DOMException.create(globalObject, [ "A prefix or qualifiedName of \"xmlns\" was given but the namespace was not the XMLNS namespace", "NamespaceError" ]); } if (namespace === XMLNS_NS && qualifiedName !== "xmlns" && prefix !== "xmlns") { throw DOMException.create(globalObject, [ "The XMLNS namespace was given but neither the prefix nor qualifiedName was \"xmlns\"", "NamespaceError" ]); } return { namespace, prefix, localName }; };
Version data entries
26 entries across 26 versions & 1 rubygems