X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6de571a660401585bc96dd92fd2563e9b64c58c6..2f83fcd45b4b23db2bb5bb4afbe1e863ebd77ec6:/services/workbench2/src/common/xml.ts diff --git a/services/workbench2/src/common/xml.ts b/services/workbench2/src/common/xml.ts new file mode 100644 index 0000000000..e7db3acad8 --- /dev/null +++ b/services/workbench2/src/common/xml.ts @@ -0,0 +1,29 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + +import { customDecodeURI } from "./url"; + +export const getTagValue = (document: Document | Element, tagName: string, defaultValue: string, skipDecoding: boolean = false) => { + const [el] = Array.from(document.getElementsByTagName(tagName)); + const URI = el ? htmlDecode(el.innerHTML) : defaultValue; + + if (!skipDecoding) { + try { + return customDecodeURI(URI); + } catch(e) {} + } + + return URI; +}; + +const htmlDecode = (input: string) => { + const out = input.split(' ').map((i) => { + const doc = new DOMParser().parseFromString(i, "text/html"); + if (doc.documentElement !== null) { + return doc.documentElement.textContent || ''; + } + return ''; + }); + return out.join(' '); +};