Allow Lua plugins to inject all templates

This commit is contained in:
Simon Ser 2019-12-17 13:15:10 +01:00
parent 38d73f5771
commit 733304c88f
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
2 changed files with 9 additions and 2 deletions

View file

@ -36,7 +36,7 @@ The entry point is at `plugins/<name>/main.lua`.
API:
* `koushin.on_render(name, f)`: prior to rendering the template `name`, call
`f` with the template data
`f` with the template data (the special name `*` matches all templates)
* `koushin.set_filter(name, f)`: set a template function
* `koushin.set_route(method, path, f)`: register a new HTTP route, `f` will be
called with the HTTP context

View file

@ -68,7 +68,7 @@ func (p *luaPlugin) setRoute(l *lua.LState) int {
return 0
}
func (p *luaPlugin) Inject(name string, data interface{}) error {
func (p *luaPlugin) inject(name string, data interface{}) error {
f, ok := p.renderCallbacks[name]
if !ok {
return nil
@ -86,6 +86,13 @@ func (p *luaPlugin) Inject(name string, data interface{}) error {
return nil
}
func (p *luaPlugin) Inject(name string, data interface{}) error {
if err := p.inject("*", data); err != nil {
return err
}
return p.inject(name, data)
}
func (p *luaPlugin) LoadTemplate(t *template.Template) error {
t.Funcs(p.filters)