diff options
author | Simon Ser <contact@emersion.fr> | 2019-12-17 13:15:10 +0100 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2019-12-17 13:15:10 +0100 |
commit | 733304c88f51df710174fd74c86c24c79fcf5b47 (patch) | |
tree | 6601a19a461db282b87b6be20e4e6cd18aedcd98 | |
parent | 38d73f57718e2990c411ad58a1e28c2adfd1ce1e (diff) | |
download | alps-733304c88f51df710174fd74c86c24c79fcf5b47.tar.gz alps-733304c88f51df710174fd74c86c24c79fcf5b47.zip |
Allow Lua plugins to inject all templates
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | plugin_lua.go | 9 |
2 files changed, 9 insertions, 2 deletions
@@ -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 diff --git a/plugin_lua.go b/plugin_lua.go index b02752d..638f17c 100644 --- a/plugin_lua.go +++ b/plugin_lua.go @@ -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) |