@prismicio/richtext
Version:
A parser and serializer for Prismic's Rich Text format
35 lines (31 loc) • 931 B
text/typescript
import { RichTextFunctionSerializer } from "./types";
/**
* Takes an array of serializers and returns a serializer applying provided
* serializers sequentially until a result is returned
*
* @remarks
* This is a low level helper mainly intended to be used by higher level
* packages Most users aren't expected to this function directly
* @typeParam SerializerReturnType - Return type of serializers
* @param serializers - Serializers to compose
*
* @returns Composed serializer
*/
export const composeSerializers = <SerializerReturnType>(
...serializers: (
| RichTextFunctionSerializer<SerializerReturnType>
| undefined
)[]
): RichTextFunctionSerializer<SerializerReturnType> => {
return (...args) => {
for (let i = 0; i < serializers.length; i++) {
const serializer = serializers[i];
if (serializer) {
const res = serializer(...args);
if (res != null) {
return res;
}
}
}
};
};