2021-01-19 22:06:17 +00:00
|
|
|
package note
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
"time"
|
|
|
|
|
|
|
|
"github.com/mickael-menu/zk/core/style"
|
|
|
|
"github.com/mickael-menu/zk/core/templ"
|
|
|
|
)
|
|
|
|
|
|
|
|
var Now = time.Date(2009, 11, 17, 20, 34, 58, 651387237, time.UTC)
|
|
|
|
|
|
|
|
// TemplLoaderSpy implements templ.Loader and saves the render contexts
|
|
|
|
// provided to the templates it creates.
|
|
|
|
//
|
|
|
|
// The generated Renderer returns the template used to create them without
|
|
|
|
// modification.
|
|
|
|
type TemplLoaderSpy struct {
|
|
|
|
Contexts []interface{}
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewTemplLoaderSpy() *TemplLoaderSpy {
|
|
|
|
return &TemplLoaderSpy{
|
|
|
|
Contexts: make([]interface{}, 0),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (l *TemplLoaderSpy) Load(template string) (templ.Renderer, error) {
|
|
|
|
return NewRendererSpy(func(context interface{}) string {
|
|
|
|
l.Contexts = append(l.Contexts, context)
|
|
|
|
return template
|
|
|
|
}), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (l *TemplLoaderSpy) LoadFile(path string) (templ.Renderer, error) {
|
|
|
|
panic("not implemented")
|
|
|
|
}
|
|
|
|
|
|
|
|
// RendererSpy implements templ.Renderer and saves the provided render contexts.
|
|
|
|
type RendererSpy struct {
|
|
|
|
Result func(interface{}) string
|
|
|
|
Contexts []interface{}
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewRendererSpy(result func(interface{}) string) *RendererSpy {
|
|
|
|
return &RendererSpy{
|
|
|
|
Contexts: make([]interface{}, 0),
|
|
|
|
Result: result,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func NewRendererSpyString(result string) *RendererSpy {
|
|
|
|
return &RendererSpy{
|
|
|
|
Contexts: make([]interface{}, 0),
|
|
|
|
Result: func(_ interface{}) string { return result },
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (m *RendererSpy) Render(context interface{}) (string, error) {
|
|
|
|
m.Contexts = append(m.Contexts, context)
|
|
|
|
return m.Result(context), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
// StylerMock implements core.Styler by doing the transformation:
|
|
|
|
// "hello", "red" -> "red(hello)"
|
|
|
|
type StylerMock struct{}
|
|
|
|
|
|
|
|
func (s *StylerMock) Style(text string, rules ...style.Rule) (string, error) {
|
2021-01-23 12:29:14 +00:00
|
|
|
return s.MustStyle(text, rules...), nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func (s *StylerMock) MustStyle(text string, rules ...style.Rule) string {
|
2021-01-19 22:06:17 +00:00
|
|
|
for _, rule := range rules {
|
|
|
|
text = fmt.Sprintf("%s(%s)", rule, text)
|
|
|
|
}
|
2021-01-23 12:29:14 +00:00
|
|
|
return text
|
2021-01-19 22:06:17 +00:00
|
|
|
}
|