Added instance, schema and symbol to field configuration factories

This commit is contained in:
2026-04-19 21:03:59 +02:00
parent 8b7d99393d
commit d5517f6650

View File

@@ -11,6 +11,11 @@ export function factory(factory_function, description) {
return new Field_Configuration(null, null, factory_function, description);
}
export function instance(type, description) {
return new Field_Configuration((i) => i instanceof type, null, () => new type(), description);
}
export function typed_value(coercion_function, default_value, description) {
return new Field_Configuration(null, coercion_function, () => default_value, description);
}
@@ -33,6 +38,14 @@ export function typed_required(coercion_function, description) {
return new Field_Configuration((value) => value !== undefined, coercion_function, null, description);
}
export function schema(field_schema, default_value, description) {
return new Field_Configuration(null, (v) => field_schema.load(v), () => field_schema.load(default_value), description);
}
export function symbol(symbol_set, default_value, description) {
return new Field_Configuration(null, (v) => symbol_set.load(v), () => symbol_set.load(default_value), description);
}
export function symbol_set(description_to_name_mapping, description=null) {
const symbols_by_name = Object.fromEntries(Object.keys(description_to_name_mapping).map(k => [k, Symbol(k)]));