Files
CT/src/Model/Utility/utility.ts
T

61 lines
1.2 KiB
TypeScript
Raw Normal View History

import { checkIsValidObject, checkMatchesObjectStructure } from "./typeSafety";
// date
export function createTimestamp(): string {
return new Date().toISOString();
}
// handlers
export type Handler<T> = (item: T) => void;
export class HandlerManager<T> {
handlers: Set<Handler<T>> = new Set();
// manage
addHandler = (handler: Handler<T>): void => {
this.handlers.add(handler);
};
deleteHandler = (handler: Handler<T>): void => {
this.handlers.delete(handler);
};
// trigger
trigger = (item: T): void => {
for (const handler of this.handlers) {
handler(item);
}
};
}
// string
2024-07-19 17:56:18 +02:00
export function stringify(data: any): string {
2024-07-20 20:42:43 +02:00
return JSON.stringify(data, null, 4);
2024-07-19 17:56:18 +02:00
}
export function parse(string: string): any {
try {
return JSON.parse(string);
} catch {
return {};
}
}
export function parseValidObject<T>(string: string, reference: T): T | null {
const parsed: any = parse(string);
if (checkIsValidObject(parsed) == false) return null;
const doesMatchReference: boolean = checkMatchesObjectStructure(
parsed,
reference
);
if (doesMatchReference == false) return null;
return parsed;
}
2024-07-20 18:58:25 +02:00
// sort
export function localeCompare(a: string, b: string): number {
return a.localeCompare(b);
}