diff options
author | Bjørn Erik Pedersen <[email protected]> | 2017-04-02 14:20:34 +0200 |
---|---|---|
committer | Bjørn Erik Pedersen <[email protected]> | 2017-04-02 14:20:34 +0200 |
commit | 7eb71ee06419f9ceedfd701ab2a27513ef448829 (patch) | |
tree | 254ba6c75575e067df76b4abe4e566936619adcb /tpl/template.go | |
parent | c97dae40d9cd24c467f5b8cfbe2ac06f3cdef1d2 (diff) | |
download | hugo-7eb71ee06419f9ceedfd701ab2a27513ef448829.tar.gz hugo-7eb71ee06419f9ceedfd701ab2a27513ef448829.zip |
Revert "tpl: Rework to handle both text and HTML templates"
Will have to take another stab at this ...
This reverts commit 5c5efa03d2512749950b0d05a7d4bde35ecbdc37.
Closes #3260
Diffstat (limited to 'tpl/template.go')
-rw-r--r-- | tpl/template.go | 111 |
1 files changed, 18 insertions, 93 deletions
diff --git a/tpl/template.go b/tpl/template.go index 617aa84ec..b94fc3242 100644 --- a/tpl/template.go +++ b/tpl/template.go @@ -1,103 +1,28 @@ -// Copyright 2017-present The Hugo Authors. All rights reserved. -// -// 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 tpl import ( - "io" - - "text/template/parse" - "html/template" - texttemplate "text/template" - - bp "github.com/spf13/hugo/bufferpool" -) - -var ( - _ TemplateExecutor = (*TemplateAdapter)(nil) + "io" ) -// TemplateHandler manages the collection of templates. -type TemplateHandler interface { - TemplateFinder +// TODO(bep) make smaller +type Template interface { + ExecuteTemplate(wr io.Writer, name string, data interface{}) error + ExecuteTemplateToHTML(context interface{}, layouts ...string) template.HTML + Lookup(name string) *template.Template + Templates() []*template.Template + New(name string) *template.Template + GetClone() *template.Template + RebuildClone() *template.Template + LoadTemplates(absPath string) + LoadTemplatesWithPrefix(absPath, prefix string) AddTemplate(name, tpl string) error - AddLateTemplate(name, tpl string) error - LoadTemplates(absPath, prefix string) + AddTemplateFileWithMaster(name, overlayFilename, masterFilename string) error + AddAceTemplate(name, basePath, innerPath string, baseContent, innerContent []byte) error + AddInternalTemplate(prefix, name, tpl string) error + AddInternalShortcode(name, tpl string) error + Partial(name string, contextList ...interface{}) template.HTML PrintErrors() - + Funcs(funcMap template.FuncMap) MarkReady() - RebuildClone() -} - -// TemplateFinder finds templates. -type TemplateFinder interface { - Lookup(name string) *TemplateAdapter -} - -// Template is the common interface between text/template and html/template. -type Template interface { - Execute(wr io.Writer, data interface{}) error - Name() string -} - -// TemplateExecutor adds some extras to Template. -type TemplateExecutor interface { - Template - ExecuteToString(data interface{}) (string, error) - Tree() string -} - -// TemplateAdapter implements the TemplateExecutor interface. -type TemplateAdapter struct { - Template -} - -// ExecuteToString executes the current template and returns the result as a -// string. -func (t *TemplateAdapter) ExecuteToString(data interface{}) (string, error) { - b := bp.GetBuffer() - defer bp.PutBuffer(b) - if err := t.Execute(b, data); err != nil { - return "", err - } - return b.String(), nil -} - -// Tree returns the template Parse tree as a string. -// Note: this isn't safe for parallel execution on the same template -// vs Lookup and Execute. -func (t *TemplateAdapter) Tree() string { - var tree *parse.Tree - switch tt := t.Template.(type) { - case *template.Template: - tree = tt.Tree - case *texttemplate.Template: - tree = tt.Tree - default: - panic("Unknown template") - } - - if tree.Root == nil { - return "" - } - s := tree.Root.String() - - return s -} - -// TemplateTestMocker adds a way to override some template funcs during tests. -// The interface is named so it's not used in regular application code. -type TemplateTestMocker interface { - SetFuncs(funcMap map[string]interface{}) } |