Skip to content

Main content

Text Converter Source Code

Browse the implementation files for Text Converter.
tool.ts typescript
import {
	checksumVariants,
	hashVariants,
	textScriptVariants
} from '$lib/tools/tool-variant-groups';
import TextConversionPreviewAction from './TextConversionPreviewAction.svelte';
import TextConversionSelector from './TextConversionSelector.svelte';

const textConversionPreviewOptions: TypeSelectOption[] = [
	...hashVariants.map(({ label, slug }) => ({
		group: 'Cryptographic hashes',
		text: label,
		value: `/${slug}`
	})),
	...checksumVariants.map(({ label, slug }) => ({
		group: 'Checksums',
		text: label,
		value: `/${slug}`
	})),
	...textScriptVariants.map(({ label, slug }) => ({
		group: 'Text scripts and codes',
		text: label,
		value: `/${slug}`
	})),
	...[
		['/encode/base64', 'Base64'],
		['/convert/text-to-binary-string', 'Binary string'],
		['/convert/text-to-bytes', 'UTF-8 bytes'],
		['/convert/text-to-hex-ascii', 'Hexadecimal ASCII'],
		['/convert/atbash', 'Atbash cipher']
	].map(([value, text]) => ({
		group: 'Other text encodings and ciphers',
		text,
		value
	}))
];

const previewTextConversion = (
	destination: TypeToolInput['value'],
	text: TypeToolInput['value']
): TypeToolInput['value'] => {
	const selected = textConversionPreviewOptions.find(
		(option) => option.value === destination
	);
	return {
		destination:
			typeof destination === 'string'
				? destination
				: '/hash/sha-256',
		label: selected?.text ?? 'selected tool',
		text: typeof text === 'string' ? text : ''
	};
};

export const Tool: TypeTool = {
	name: 'Text Converter',
	slug: 'convert/text',
	intro:
		'Choose a text encoding, checksum, cryptographic hash, or cipher and continue in its canonical tool.',
	tool: () => '',
	i: [],
	o: [
		{
			id: 'selector',
			label: 'Text conversion selector',
			placeholder: 'Choose a text operation',
			render: 'custom',
			renderas: TextConversionSelector,
			type: 'object'
		}
	],
	preview: {
		i: [
			{
				label: 'Operation',
				options: textConversionPreviewOptions,
				placeholder: 'Choose a text operation',
				type: 'select',
				value: '/hash/sha-256'
			},
			{
				label: 'Text',
				placeholder: 'Enter text',
				type: 'text',
				value: 'tool.io'
			}
		],
		o: [
			{
				label: 'Open selected tool',
				placeholder: 'Open selected text tool',
				render: 'custom',
				renderas: TextConversionPreviewAction,
				type: 'object',
				unframed: true
			}
		],
		tool: previewTextConversion
	},
	alternative: [
		{ title: 'Hash tools', url: '/hash' },
		{ title: 'Checksum tools', url: '/checksum' },
		{ title: 'Sqids encoder', url: '/encode/sqids' },
		{ title: 'UUID generators', url: '/generate/uuid' }
	]
};

export default Tool;

Description

Browse the implementation files for Text Converter.

References

  1. Tool.io on GitHub
  2. Tool.io TypeScript tools library

Similar or alternative tools