This repository has been archived on 2025-07-31. You can view files and clone it, but cannot push or open issues or pull requests.
Files
terminally-online/src/utilities/validation.ts
Nikolaos Karaolidis d2054b028a Reorganize files
Signed-off-by: Nikolaos Karaolidis <nick@karaolidis.com>
2023-08-01 14:53:10 +03:00

73 lines
1.3 KiB
TypeScript

import { isHexColor, isRgbColor } from '.';
interface StringValidationResult {
valid: boolean;
raw: string;
parsed: string;
error?: string;
}
const validateMemeTitle = (title: string): StringValidationResult => {
const parsedTitle = title.trim();
if (parsedTitle.length === 0) {
return {
valid: false,
raw: title,
parsed: parsedTitle,
error: 'Title cannot be empty',
};
}
return {
valid: true,
raw: title,
parsed: parsedTitle,
};
};
const validateTagName = (name: string): StringValidationResult => {
const parsedName = name.trim();
if (parsedName.length === 0) {
return {
valid: false,
raw: name,
parsed: parsedName,
error: 'Name cannot be empty',
};
}
return {
valid: true,
raw: name,
parsed: parsedName,
};
};
const validateColor = (color: string): StringValidationResult => {
const parsedColor = color.trim().toLowerCase();
if (!isHexColor(parsedColor) && !isRgbColor(parsedColor)) {
return {
valid: false,
raw: color,
parsed: parsedColor,
error: 'Color must be a valid hex or rgb value',
};
}
return {
valid: true,
raw: color,
parsed: parsedColor,
};
};
export {
type StringValidationResult,
validateMemeTitle,
validateTagName,
validateColor,
};