Improved dispatchers with richer results and added predicate and regular expression based dispatchers
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import { Mapping_Resolver, Chained_Resolver } from '@efforting.tech/rule-processing/resolvers';
|
||||
|
||||
|
||||
import { inspect } from 'node:util';
|
||||
|
||||
|
||||
const vr = new Mapping_Resolver();
|
||||
@@ -9,9 +9,55 @@ const tr = new Mapping_Resolver(new Map(), item => typeof item);
|
||||
const cr = new Chained_Resolver([vr, tr]);
|
||||
|
||||
|
||||
vr.rules.set('HELLO', () => 'WORLD');
|
||||
tr.rules.set('string', () => 'World');
|
||||
vr.rules.set('HELLO', {handler: () => 'WORLD'});
|
||||
tr.rules.set('string', {extra_stuff: 'Yo!', handler: (c) => `World with context: ${inspect(c)}`});
|
||||
|
||||
console.log(cr.resolve('HELLO'));
|
||||
console.log(cr.resolve('hello'));
|
||||
console.log(cr.resolve(123));
|
||||
|
||||
|
||||
/* OUTPUT
|
||||
|
||||
WORLD
|
||||
World with context: {
|
||||
resolver: Chained_Resolver {
|
||||
chain_links: [ [Mapping_Resolver], [Mapping_Resolver] ]
|
||||
},
|
||||
item: 'hello',
|
||||
extra_stuff: 'Yo!',
|
||||
handler: [Function: handler]
|
||||
}
|
||||
file:///srv/Projekt/efforting.tech/nodejs.esm-library/build/packages/rule-processing/resolv
|
||||
throw new Item_Unresolvable({ resolver: this, item });
|
||||
^
|
||||
|
||||
Item_Unresolvable [Error]: Cannot resolve item 123 of type "number" using resolver Chained_
|
||||
at Chained_Resolver.resolve (file:///srv/Projekt/efforting.tech/nodejs.esm-library/buil
|
||||
at file:///srv/Projekt/efforting.tech/nodejs.esm-library/experiments/res1.mjs:17:16
|
||||
at ModuleJob.run (node:internal/modules/esm/module_job:430:25)
|
||||
at async node:internal/modules/esm/loader:639:26
|
||||
at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:101:5) {
|
||||
data: {
|
||||
resolver: Chained_Resolver {
|
||||
chain_links: [
|
||||
Mapping_Resolver {
|
||||
rules: Map(1) { 'HELLO' => [Object] },
|
||||
key_function: null
|
||||
},
|
||||
Mapping_Resolver {
|
||||
rules: Map(1) { 'string' => [Object] },
|
||||
key_function: [Function (anonymous)]
|
||||
}
|
||||
]
|
||||
},
|
||||
item: 123
|
||||
}
|
||||
}
|
||||
|
||||
Node.js v25.8.2
|
||||
|
||||
|
||||
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user