diff --git a/src/containers.ts b/src/containers.ts index 46e9c699..172cea07 100644 --- a/src/containers.ts +++ b/src/containers.ts @@ -25,7 +25,7 @@ export type HelperFunction = ( config: SqrlConfig ) => string | Promise -export type FilterFunction = (str: string) => any | Promise +export type FilterFunction = (obj: any, ...filterParameters: any[]) => any | Promise interface EscapeMap { '&': '&' diff --git a/test/filters.spec.ts b/test/filters.spec.ts index c3a00e6b..90d3210a 100644 --- a/test/filters.spec.ts +++ b/test/filters.spec.ts @@ -28,5 +28,14 @@ describe('Simple render checks', () => { '' ) }) + it('Custom filter with parameters', () => { + filters.define('customFilterWithParams', function (obj: any, ...filterParameters: any[]): string { + const [joinStr, lastJoinStr] = filterParameters + const last = obj.splice(-1) + return obj.join(joinStr) + lastJoinStr + last; + }) + expect(render(`{{ it.fruits | customFilterWithParams(', ', ' or ') /}} ?`, { fruits: ["Apple", "Banana", "Kiwi"] })) + .toEqual('Apple, Banana or Kiwi ?') + }) }) })