Reorganize Template into their own package

pull/6/head
Mickaël Menu 3 years ago
parent 378834c495
commit 16e7b55d41
No known key found for this signature in database
GPG Key ID: 53D73664CD359895

@ -6,7 +6,7 @@ import (
"github.com/aymerick/raymond"
"github.com/mickael-menu/zk/adapter/handlebars/helpers"
"github.com/mickael-menu/zk/core"
"github.com/mickael-menu/zk/core/templ"
"github.com/mickael-menu/zk/util"
"github.com/mickael-menu/zk/util/date"
"github.com/mickael-menu/zk/util/errors"
@ -47,7 +47,7 @@ func NewLoader() *Loader {
}
// Load retrieves or parses a handlebars string template.
func (l *Loader) Load(content string) (core.Template, error) {
func (l *Loader) Load(content string) (templ.Renderer, error) {
wrap := errors.Wrapperf("load template failed")
// Already loaded?
@ -67,7 +67,7 @@ func (l *Loader) Load(content string) (core.Template, error) {
}
// LoadFile retrieves or parses a handlebars file template.
func (l *Loader) LoadFile(path string) (core.Template, error) {
func (l *Loader) LoadFile(path string) (templ.Renderer, error) {
wrap := errors.Wrapper("load template file failed")
path, err := filepath.Abs(path)

@ -4,7 +4,7 @@ import (
"fmt"
"path/filepath"
"github.com/mickael-menu/zk/core"
"github.com/mickael-menu/zk/core/templ"
"github.com/mickael-menu/zk/core/zk"
"github.com/mickael-menu/zk/util/errors"
"github.com/mickael-menu/zk/util/opt"
@ -26,7 +26,7 @@ type CreateOpts struct {
// Returns the path of the newly created note.
func Create(
opts CreateOpts,
templateLoader core.TemplateLoader,
templateLoader templ.Loader,
) (string, error) {
wrap := errors.Wrapperf("new note")
@ -35,7 +35,7 @@ func Create(
return "", err
}
var bodyTemplate core.Template = core.NullTemplate
var bodyTemplate templ.Renderer = templ.NullRenderer
if templatePath := opts.Dir.Config.BodyTemplatePath.Unwrap(); templatePath != "" {
bodyTemplate, err = templateLoader.LoadFile(templatePath)
if err != nil {
@ -83,8 +83,8 @@ type renderContext struct {
}
type createDeps struct {
filenameTemplate core.Template
bodyTemplate core.Template
filenameTemplate templ.Renderer
bodyTemplate templ.Renderer
genId func() string
validatePath func(path string) (bool, error)
}

@ -4,7 +4,7 @@ import (
"fmt"
"testing"
"github.com/mickael-menu/zk/core"
"github.com/mickael-menu/zk/core/templ"
"github.com/mickael-menu/zk/core/zk"
"github.com/mickael-menu/zk/util/assert"
"github.com/mickael-menu/zk/util/opt"
@ -132,10 +132,10 @@ func TestCreateErrorWhenNoValidPaths(t *testing.T) {
},
},
createDeps{
filenameTemplate: core.TemplateFunc(func(context interface{}) (string, error) {
filenameTemplate: templ.RendererFunc(func(context interface{}) (string, error) {
return "filename", nil
}),
bodyTemplate: core.NullTemplate,
bodyTemplate: templ.NullRenderer,
genId: func() string { return "abc" },
validatePath: func(path string) (bool, error) { return false, nil },
},

@ -0,0 +1,28 @@
package templ
// Loader parses a given string template.
type Loader interface {
Load(template string) (Renderer, error)
LoadFile(path string) (Renderer, error)
}
// Renderer produces a string using a given context.
type Renderer interface {
Render(context interface{}) (string, error)
}
// RendererFunc is an adapter to use a function as a Renderer.
type RendererFunc func(context interface{}) (string, error)
func (f RendererFunc) Render(context interface{}) (string, error) {
return f(context)
}
// NullRenderer is a Renderer always returning an empty string.
var NullRenderer = nullRenderer{}
type nullRenderer struct{}
func (t nullRenderer) Render(context interface{}) (string, error) {
return "", nil
}

@ -1,28 +0,0 @@
package core
// TemplateLoader parses a given string template.
type TemplateLoader interface {
Load(template string) (Template, error)
LoadFile(path string) (Template, error)
}
// Template renders strings using a given context.
type Template interface {
Render(context interface{}) (string, error)
}
// TemplateFunc is an adapter to use a function as a Template.
type TemplateFunc func(context interface{}) (string, error)
func (f TemplateFunc) Render(context interface{}) (string, error) {
return f(context)
}
// NullTemplate is a Template returning always an empty string.
var NullTemplate = nullTemplate{}
type nullTemplate struct{}
func (t nullTemplate) Render(context interface{}) (string, error) {
return "", nil
}
Loading…
Cancel
Save