summaryrefslogtreecommitdiffstats
path: root/tpl/internal
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-04-30 11:34:45 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-05-01 15:13:41 +0200
commitc5373efcf07aeb161324b3ce844d41a172da42bc (patch)
tree71e2616ea98ebd84f07dbb97ebaf87dc37bc62f1 /tpl/internal
parent8f95172c7af334f61d75faad74cc75016804eca6 (diff)
tpl: Add TemplateFuncsNamespaceRegistry
As a first step to remove the hard ties between `tplimpl` and the different namespace packages. The `lang` package is used as the first example use case. See #3042
Diffstat (limited to 'tpl/internal')
-rw-r--r--tpl/internal/templatefuncsRegistry.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/tpl/internal/templatefuncsRegistry.go b/tpl/internal/templatefuncsRegistry.go
new file mode 100644
index 000000000..aa3196ca3
--- /dev/null
+++ b/tpl/internal/templatefuncsRegistry.go
@@ -0,0 +1,47 @@
+// Copyright 2017-present The Hugo Authors. All rights reserved.
+//
+// Portions Copyright The Go Authors.
+
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package internal
+
+import (
+ "github.com/spf13/hugo/deps"
+)
+
+var TemplateFuncsNamespaceRegistry []func(d *deps.Deps) *TemplateFuncsNamespace
+
+func AddTemplateFuncsNamespace(ns func(d *deps.Deps) *TemplateFuncsNamespace) {
+ TemplateFuncsNamespaceRegistry = append(TemplateFuncsNamespaceRegistry, ns)
+}
+
+type TemplateFuncsNamespace struct {
+ // The namespace name, "strings", "lang", etc.
+ Name string
+
+ // This is the method receiver.
+ Context interface{}
+
+ // Any template funcs aliases. This is mainly motivated by keeping
+ // backwards compability, but some new template funcs may also make
+ // sense to give short and snappy aliases.
+ // Note that these aliases are global and will be merged, so the last
+ // key will win.
+ Aliases map[string]interface{}
+
+ // A slice of input/expected examples.
+ // We keep it a the namespace level for now, but may find a way to keep track
+ // of the single template func, for documentation purposes.
+ // Some of these, hopefully just a few, may depend on some test data to run.
+ Examples [][2]string
+}