@@ -34,7 +34,10 @@ type ViewKit struct {
3434 DefaultTemplateFileExtension string
3535 // PreProcessors is a list of PreProcessor.
3636 PreProcessors []pongo2.PreProcessor
37-
37+ // Filters is a map of filters to be registered.
38+ Filters map [string ]pongo2.FilterFunction
39+ // Tags is a map of tags to be registered.
40+ Tags map [string ]pongo2.TagParser
3841 // Component config
3942
4043 // DisableComponentHTMLTag disables the HTML syntax extension for components.
@@ -106,6 +109,8 @@ func New() *ViewKit {
106109 BaseDir : "" ,
107110 DefaultTemplateFileExtension : ".html" ,
108111 PreProcessors : []pongo2.PreProcessor {},
112+ Filters : map [string ]pongo2.FilterFunction {},
113+ Tags : map [string ]pongo2.TagParser {},
109114 DisableComponentHTMLTag : false ,
110115 ComponentHTMLTagPrefix : "x-" ,
111116 Components : []* pongo2.Component {},
@@ -186,6 +191,20 @@ func (v *ViewKit) Renderer() (*Renderer, error) {
186191 ts .ComponentSet .TemplateSetFS = templateSetFS
187192 ts .ComponentSet .DefaultTemplateFileExtension = v .DefaultTemplateFileExtension
188193
194+ // register filters
195+ for name , filter := range v .Filters {
196+ if err := ts .RegisterFilter (name , filter ); err != nil {
197+ return nil , fmt .Errorf ("failed to register filter %s: %w" , name , err )
198+ }
199+ }
200+
201+ // register tags
202+ for name , tag := range v .Tags {
203+ if err := ts .RegisterTag (name , tag ); err != nil {
204+ return nil , fmt .Errorf ("failed to register tag %s: %w" , name , err )
205+ }
206+ }
207+
189208 // register components
190209 for _ , dir := range v .AnonymousComponentsDirectories {
191210 if err := ts .ComponentSet .RegisterTemplateFileComponentsDirectory (dir ); err != nil {
0 commit comments