From 69b2c589f9b69a34427cb8533ddb938bd997914f Mon Sep 17 00:00:00 2001 From: YacovGold <8984042+YacovGold@users.noreply.github.com> Date: Tue, 11 Aug 2026 14:58:25 +0300 Subject: [PATCH] feat: add unregisterFilter method (#946) * feat: add unregisterFilter method * docs: show how to re-register built-in filters --------- Co-authored-by: Yacov --- .../source/tutorials/register-filters-tags.md | 20 +++++++++++- src/liquid.ts | 3 ++ .../liquid/register-filters.spec.ts | 31 ++++++++++++++++++- 3 files changed, 52 insertions(+), 2 deletions(-) diff --git a/docs/source/tutorials/register-filters-tags.md b/docs/source/tutorials/register-filters-tags.md index 2e6bf7d33..53af1b9f9 100644 --- a/docs/source/tutorials/register-filters-tags.md +++ b/docs/source/tutorials/register-filters-tags.md @@ -62,7 +62,23 @@ See existing filter implementations here: { liquid = new Liquid() }) + + it('should unregister a custom filter', async () => { + liquid.registerFilter('greet', value => `hello ${value}`) + liquid.unregisterFilter('greet') + const html = await liquid.parseAndRender('{{ "world" | greet }}') + return expect(html).toBe('world') + }) + + it('should unregister a built-in filter', () => { + liquid = new Liquid({ strictFilters: true }) + liquid.unregisterFilter('upcase') + return expect(liquid.parseAndRender('{{ "foo" | upcase }}')).rejects.toThrow('undefined filter: upcase') + }) + + it('should support re-registering a built-in filter', async () => { + liquid.unregisterFilter('upcase') + liquid.registerFilter('upcase', filters.upcase) + const html = await liquid.parseAndRender('{{ "foo" | upcase }}') + return expect(html).toBe('FOO') + }) + + it('should not throw for an unknown filter', () => { + expect(() => liquid.unregisterFilter('unknown')).not.toThrow() + }) +})