diff options
author | 2023-06-18 12:27:26 +0200 | |
---|---|---|
committer | 2023-06-18 10:27:26 +0000 | |
commit | a6bbeaebd8e4f629ff20d6e2386be9c8734f6d8d (patch) | |
tree | 586b395e8c4854d362d844a6b15bb9cc85f52b64 /src/tools/xml-formatter/xml-formatter.service.ts | |
parent | f771e7a99f962463401cdd8addd455782605675f (diff) | |
download | it-tools-a6bbeaebd8e4f629ff20d6e2386be9c8734f6d8d.tar.gz it-tools-a6bbeaebd8e4f629ff20d6e2386be9c8734f6d8d.tar.zst it-tools-a6bbeaebd8e4f629ff20d6e2386be9c8734f6d8d.zip |
feat(new tool): xml formatter (#457)
* feat(new tool): xml formatter
* feat(xml-formatter): added happy path e2e tests
* refactor(xml-formatter): improved unit tests
* refactor(xml-formatter): add better suitable icon
* feat(xml-formatter): added happy path e2e tests
* feat(xml-formatter): registered xml as syntax highlighter
* chore(auto-import): removed unused NSpace
---------
Co-authored-by: Corentin Thomasset <corentin.thomasset74@gmail.com>
Diffstat (limited to 'src/tools/xml-formatter/xml-formatter.service.ts')
-rw-r--r-- | src/tools/xml-formatter/xml-formatter.service.ts | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/tools/xml-formatter/xml-formatter.service.ts b/src/tools/xml-formatter/xml-formatter.service.ts new file mode 100644 index 0000000..3441f0b --- /dev/null +++ b/src/tools/xml-formatter/xml-formatter.service.ts @@ -0,0 +1,28 @@ +import xmlFormat, { type XMLFormatterOptions } from 'xml-formatter'; +import { withDefaultOnError } from '@/utils/defaults'; + +export { formatXml, isValidXML }; + +function cleanRawXml(rawXml: string): string { + return rawXml.trim(); +} + +function formatXml(rawXml: string, options?: XMLFormatterOptions): string { + return withDefaultOnError(() => xmlFormat(cleanRawXml(rawXml), options) ?? '', ''); +} + +function isValidXML(rawXml: string): boolean { + const cleanedRawXml = cleanRawXml(rawXml); + + if (cleanedRawXml === '') { + return true; + } + + try { + xmlFormat(cleanedRawXml); + return true; + } + catch (e) { + return false; + } +} |