optimize settings helper
This commit is contained in:
parent
730c25a9a1
commit
a8edc19f34
11 changed files with 343 additions and 119 deletions
69
src/helpers/convertHelper.ts
Normal file
69
src/helpers/convertHelper.ts
Normal file
|
@ -0,0 +1,69 @@
|
|||
import ms from "ms";
|
||||
|
||||
export abstract class TypeConverter<T> {
|
||||
abstract fromString(value: string): T;
|
||||
abstract toString(value: T): string;
|
||||
abstract validate(value: string): boolean;
|
||||
}
|
||||
|
||||
export abstract class StringTypeConverter extends TypeConverter<string> {
|
||||
fromString(value: string): string {
|
||||
return value;
|
||||
}
|
||||
toString(value: string): string {
|
||||
return value;
|
||||
}
|
||||
validate(value: string): boolean {
|
||||
return typeof value === "string";
|
||||
}
|
||||
}
|
||||
|
||||
export abstract class NumberTypeConverter extends TypeConverter<number> {
|
||||
fromString(value: string): number {
|
||||
return Number(value);
|
||||
}
|
||||
toString(value: number): string {
|
||||
return String(value);
|
||||
}
|
||||
validate(value: string): boolean {
|
||||
const num = Number(value);
|
||||
return !isNaN(num);
|
||||
}
|
||||
}
|
||||
|
||||
export abstract class BooleanTypeConverter extends TypeConverter<boolean> {
|
||||
fromString(value: string): boolean {
|
||||
return value === "true";
|
||||
}
|
||||
toString(value: boolean): string {
|
||||
return value ? "true" : "false";
|
||||
}
|
||||
validate(value: string): boolean {
|
||||
return value === "true" || value === "false";
|
||||
}
|
||||
}
|
||||
|
||||
export abstract class MsTypeConverter extends TypeConverter<ms.StringValue> {
|
||||
fromString(value: string): ms.StringValue {
|
||||
return value as ms.StringValue;
|
||||
}
|
||||
toString(value: ms.StringValue): string {
|
||||
return String(value);
|
||||
}
|
||||
validate(value: string): boolean {
|
||||
try {
|
||||
const result = ms(value as ms.StringValue);
|
||||
return result !== undefined;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Konkrete Implementierungen der Converter
|
||||
export class StringConverter extends StringTypeConverter {}
|
||||
export class LongStringConverter extends StringTypeConverter {}
|
||||
export class UrlConverter extends StringTypeConverter {}
|
||||
export class NumberConverter extends NumberTypeConverter {}
|
||||
export class BooleanConverter extends BooleanTypeConverter {}
|
||||
export class MsConverter extends MsTypeConverter {}
|
Loading…
Add table
Add a link
Reference in a new issue