You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
1.2 KiB
72 lines
1.2 KiB
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"io"
|
|
"path"
|
|
"path/filepath"
|
|
|
|
"github.com/GeertJohan/go.rice"
|
|
"github.com/flosch/pongo2"
|
|
)
|
|
|
|
type Pongo2Loader struct {
|
|
box *rice.Box
|
|
}
|
|
|
|
func NewPongo2TemplatesLoader() (*Pongo2Loader, error) {
|
|
fs := &Pongo2Loader{}
|
|
|
|
p2l, err := rice.FindBox("templates")
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
fs.box = p2l
|
|
return fs, nil
|
|
}
|
|
|
|
func (fs *Pongo2Loader) Get(path string) (io.Reader, error) {
|
|
myBytes, err := fs.box.Bytes(path)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return bytes.NewReader(myBytes), nil
|
|
}
|
|
|
|
func (fs *Pongo2Loader) Abs(base, name string) string {
|
|
me := path.Join(filepath.Dir(base), name)
|
|
return me
|
|
}
|
|
|
|
func populateTemplatesMap(tSet *pongo2.TemplateSet, tMap map[string]*pongo2.Template) error {
|
|
templates := []string{
|
|
"index.html",
|
|
"paste.html",
|
|
"API.html",
|
|
"400.html",
|
|
"401.html",
|
|
"404.html",
|
|
"oops.html",
|
|
|
|
"display/audio.html",
|
|
"display/image.html",
|
|
"display/video.html",
|
|
"display/pdf.html",
|
|
"display/bin.html",
|
|
"display/md.html",
|
|
"display/file.html",
|
|
}
|
|
|
|
for _, tName := range templates {
|
|
tpl, err := tSet.FromFile(tName)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
tMap[tName] = tpl
|
|
}
|
|
|
|
return nil
|
|
}
|