diff options
author | 2023-04-10 17:34:58 +0200 | |
---|---|---|
committer | 2023-04-10 22:38:35 +0200 | |
commit | c0a89131dd919c2bb6562cb0de18b1396e12bf23 (patch) | |
tree | 42cfe5c700ff2cd5190e8585589ea4f8f697bee5 /src/tools/json-to-yaml-converter/json-to-yaml.vue | |
parent | 05f06f6a072e8421c48ebe7c2bafcbbe056163ed (diff) | |
download | it-tools-c0a89131dd919c2bb6562cb0de18b1396e12bf23.tar.gz it-tools-c0a89131dd919c2bb6562cb0de18b1396e12bf23.tar.zst it-tools-c0a89131dd919c2bb6562cb0de18b1396e12bf23.zip |
feat(new-tool): yaml and json converters
Diffstat (limited to 'src/tools/json-to-yaml-converter/json-to-yaml.vue')
-rw-r--r-- | src/tools/json-to-yaml-converter/json-to-yaml.vue | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/tools/json-to-yaml-converter/json-to-yaml.vue b/src/tools/json-to-yaml-converter/json-to-yaml.vue new file mode 100644 index 0000000..f25ef37 --- /dev/null +++ b/src/tools/json-to-yaml-converter/json-to-yaml.vue @@ -0,0 +1,29 @@ +<template> + <format-transformer + input-label="Your JSON" + input-placeholder="Paste your JSON here..." + output-label="YAML from your JSON" + output-language="yaml" + :input-validation-rules="rules" + :transformer="transformer" + /> +</template> + +<script setup lang="ts"> +import type { UseValidationRule } from '@/composable/validation'; +import { isNotThrowing } from '@/utils/boolean'; +import { withDefaultOnError } from '@/utils/defaults'; +import { stringify } from 'yaml'; +import JSON5 from 'json5'; + +const transformer = (value: string) => withDefaultOnError(() => stringify(JSON5.parse(value)), ''); + +const rules: UseValidationRule<string>[] = [ + { + validator: (value: string) => value === '' || isNotThrowing(() => stringify(JSON5.parse(value))), + message: 'Provided JSON is not valid.', + }, +]; +</script> + +<style lang="less" scoped></style> |