Page MenuHomeSealhub

regexp.ts
No OneTemporary

regexp.ts

import { is, predicates } from "@sealcode/ts-predicates";
import { Context } from "koa";
import { FormDataValue } from "../form-types.js";
import { FieldParseResult, FormField } from "./field.js";
export class RegExpField<Required extends boolean> extends FormField<Required> {
constructor(
required: Required,
public regexp: RegExp,
public error_message: string,
public default_value: string = ""
) {
super(required);
}
predicate = predicates.string;
public async isValueValid(
_: Context,
value: unknown
): Promise<{ valid: boolean; message: string }> {
if (!is(value, predicates.string)) {
return { valid: false, message: "expected a string" };
}
if (this.regexp.exec(value)) {
return { valid: true, message: "" };
}
return { valid: false, message: this.error_message };
}
async parse(
_: Context,
value: FormDataValue
): Promise<FieldParseResult<string>> {
if (is(value, predicates.string)) {
return {
parsable: true,
parsed_value: value,
error: null,
};
} else {
return {
parsable: false,
parsed_value: null,
error: "Please enter a string",
};
}
}
public getEmptyValue(): string {
return this.default_value || "";
}
}

File Metadata

Mime Type
text/x-java
Expires
Wed, May 7, 19:48 (22 h, 59 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
625318
Default Alt Text
regexp.ts (1 KB)

Event Timeline