add unescape unicode in JSON Prettify
This commit is contained in:
		
							parent
							
								
									08d977b8cd
								
							
						
					
					
						commit
						fa7c89cb44
					
				
							
								
								
									
										5
									
								
								components.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								components.d.ts
									
									
									
									
										vendored
									
									
								
							| @ -131,17 +131,22 @@ declare module '@vue/runtime-core' { | |||||||
|     MimeTypes: typeof import('./src/tools/mime-types/mime-types.vue')['default'] |     MimeTypes: typeof import('./src/tools/mime-types/mime-types.vue')['default'] | ||||||
|     NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default'] |     NavbarButtons: typeof import('./src/components/NavbarButtons.vue')['default'] | ||||||
|     NCheckbox: typeof import('naive-ui')['NCheckbox'] |     NCheckbox: typeof import('naive-ui')['NCheckbox'] | ||||||
|  |     NCode: typeof import('naive-ui')['NCode'] | ||||||
|     NCollapseTransition: typeof import('naive-ui')['NCollapseTransition'] |     NCollapseTransition: typeof import('naive-ui')['NCollapseTransition'] | ||||||
|     NConfigProvider: typeof import('naive-ui')['NConfigProvider'] |     NConfigProvider: typeof import('naive-ui')['NConfigProvider'] | ||||||
|     NDivider: typeof import('naive-ui')['NDivider'] |     NDivider: typeof import('naive-ui')['NDivider'] | ||||||
|     NEllipsis: typeof import('naive-ui')['NEllipsis'] |     NEllipsis: typeof import('naive-ui')['NEllipsis'] | ||||||
|  |     NFormItem: typeof import('naive-ui')['NFormItem'] | ||||||
|     NH1: typeof import('naive-ui')['NH1'] |     NH1: typeof import('naive-ui')['NH1'] | ||||||
|     NH3: typeof import('naive-ui')['NH3'] |     NH3: typeof import('naive-ui')['NH3'] | ||||||
|     NIcon: typeof import('naive-ui')['NIcon'] |     NIcon: typeof import('naive-ui')['NIcon'] | ||||||
|  |     NInputNumber: typeof import('naive-ui')['NInputNumber'] | ||||||
|     NLayout: typeof import('naive-ui')['NLayout'] |     NLayout: typeof import('naive-ui')['NLayout'] | ||||||
|     NLayoutSider: typeof import('naive-ui')['NLayoutSider'] |     NLayoutSider: typeof import('naive-ui')['NLayoutSider'] | ||||||
|     NMenu: typeof import('naive-ui')['NMenu'] |     NMenu: typeof import('naive-ui')['NMenu'] | ||||||
|  |     NScrollbar: typeof import('naive-ui')['NScrollbar'] | ||||||
|     NSpace: typeof import('naive-ui')['NSpace'] |     NSpace: typeof import('naive-ui')['NSpace'] | ||||||
|  |     NSwitch: typeof import('naive-ui')['NSwitch'] | ||||||
|     NTable: typeof import('naive-ui')['NTable'] |     NTable: typeof import('naive-ui')['NTable'] | ||||||
|     NumeronymGenerator: typeof import('./src/tools/numeronym-generator/numeronym-generator.vue')['default'] |     NumeronymGenerator: typeof import('./src/tools/numeronym-generator/numeronym-generator.vue')['default'] | ||||||
|     OtpCodeGeneratorAndValidator: typeof import('./src/tools/otp-code-generator-and-validator/otp-code-generator-and-validator.vue')['default'] |     OtpCodeGeneratorAndValidator: typeof import('./src/tools/otp-code-generator-and-validator/otp-code-generator-and-validator.vue')['default'] | ||||||
|  | |||||||
| @ -11,7 +11,8 @@ const inputElement = ref<HTMLElement>(); | |||||||
| const rawJson = useStorage('json-prettify:raw-json', '{"hello": "world", "foo": "bar"}'); | const rawJson = useStorage('json-prettify:raw-json', '{"hello": "world", "foo": "bar"}'); | ||||||
| const indentSize = useStorage('json-prettify:indent-size', 3); | const indentSize = useStorage('json-prettify:indent-size', 3); | ||||||
| const sortKeys = useStorage('json-prettify:sort-keys', true); | const sortKeys = useStorage('json-prettify:sort-keys', true); | ||||||
| const cleanJson = computed(() => withDefaultOnError(() => formatJson({ rawJson, indentSize, sortKeys }), '')); | const unescapeUnicode = useStorage('json-prettify:unescape-unicode', false); | ||||||
|  | const cleanJson = computed(() => withDefaultOnError(() => formatJson({ rawJson, indentSize, sortKeys, unescapeUnicode }), '')); | ||||||
| 
 | 
 | ||||||
| const rawJsonValidation = useValidation({ | const rawJsonValidation = useValidation({ | ||||||
|   source: rawJson, |   source: rawJson, | ||||||
| @ -30,6 +31,9 @@ const rawJsonValidation = useValidation({ | |||||||
|       <n-form-item label="Sort keys :" label-placement="left" label-width="100"> |       <n-form-item label="Sort keys :" label-placement="left" label-width="100"> | ||||||
|         <n-switch v-model:value="sortKeys" /> |         <n-switch v-model:value="sortKeys" /> | ||||||
|       </n-form-item> |       </n-form-item> | ||||||
|  |       <n-form-item label="Unescape Unicode :" label-placement="left" label-width="150"> | ||||||
|  |         <n-switch v-model:value="unescapeUnicode" /> | ||||||
|  |       </n-form-item> | ||||||
|       <n-form-item label="Indent size :" label-placement="left" label-width="100" :show-feedback="false"> |       <n-form-item label="Indent size :" label-placement="left" label-width="100" :show-feedback="false"> | ||||||
|         <n-input-number v-model:value="indentSize" min="0" max="10" style="width: 100px" /> |         <n-input-number v-model:value="indentSize" min="0" max="10" style="width: 100px" /> | ||||||
|       </n-form-item> |       </n-form-item> | ||||||
|  | |||||||
| @ -20,16 +20,25 @@ function sortObjectKeys<T>(obj: T): T { | |||||||
|     }, {} as Record<string, unknown>) as T; |     }, {} as Record<string, unknown>) as T; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | function unescapeUnicodeJSON(str: string) { | ||||||
|  |   return str.replace(/\\u([\dA-Fa-f]{4})/g, (match, grp) => | ||||||
|  |     String.fromCharCode(Number.parseInt(grp, 16)), | ||||||
|  |   ); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| function formatJson({ | function formatJson({ | ||||||
|   rawJson, |   rawJson, | ||||||
|   sortKeys = true, |   sortKeys = true, | ||||||
|   indentSize = 3, |   indentSize = 3, | ||||||
|  |   unescapeUnicode = false, | ||||||
| }: { | }: { | ||||||
|   rawJson: MaybeRef<string> |   rawJson: MaybeRef<string> | ||||||
|   sortKeys?: MaybeRef<boolean> |   sortKeys?: MaybeRef<boolean> | ||||||
|   indentSize?: MaybeRef<number> |   indentSize?: MaybeRef<number> | ||||||
|  |   unescapeUnicode?: MaybeRef<boolean> | ||||||
| }) { | }) { | ||||||
|   const parsedObject = JSON5.parse(get(rawJson)); |   const raw = get(rawJson); | ||||||
|  |   const parsedObject = JSON5.parse(get(unescapeUnicode) ? unescapeUnicodeJSON(raw) : raw); | ||||||
| 
 | 
 | ||||||
|   return JSON.stringify(get(sortKeys) ? sortObjectKeys(parsedObject) : parsedObject, null, get(indentSize)); |   return JSON.stringify(get(sortKeys) ? sortObjectKeys(parsedObject) : parsedObject, null, get(indentSize)); | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user