UNPKG

tag-soup

Version:

The fastest pure JS SAX/DOM XML/HTML parser.

26 lines (25 loc) 974 B
import { getCaseInsensitiveHashCode, getCaseSensitiveHashCode } from './tokenizeMarkup.js'; import { serializeMarkup } from './serializeMarkup.js'; /** * Serializes DOM node as HTML/XML string. * * @param options Serialization options. * @see {@link toHTML} * @see {@link toXML} * @group Serializer */ export function createSerializer(options = {}) { const resolvedOptions = resolveSerializerOptions(options); return node => serializeMarkup(node, resolvedOptions); } export function resolveSerializerOptions(options) { const { voidTags, areTagNamesCaseInsensitive, areSelfClosingTagsSupported, encodeText } = options; const getHashCode = areTagNamesCaseInsensitive ? getCaseInsensitiveHashCode : getCaseSensitiveHashCode; const toHashCode = (str) => getHashCode(str, 0, str.length); return { toHashCode, voidTags: voidTags && new Set(voidTags.map(toHashCode)), areSelfClosingTagsSupported, encodeText, }; }