73 lines
1.3 KiB
TypeScript
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,
|
|
};
|