20 lines
452 B
TypeScript
20 lines
452 B
TypeScript
import { Renderer, RenderContext } from './IGroupingRenderer';
|
|
|
|
export interface Pipeline {
|
|
run(context: RenderContext): void;
|
|
}
|
|
|
|
export function buildPipeline(renderers: Renderer[]): Pipeline {
|
|
// Link renderers
|
|
for (let i = 0; i < renderers.length - 1; i++) {
|
|
renderers[i].next = renderers[i + 1];
|
|
}
|
|
|
|
const first = renderers[0] ?? null;
|
|
|
|
return {
|
|
run(context: RenderContext) {
|
|
if (first) first.render(context);
|
|
}
|
|
};
|
|
}
|