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.
box-o-sand/gotime/smplt/simplate.go

57 lines
1.0 KiB

package smplt
import (
"mime"
"path"
"strings"
)
const (
SIMPLATE_TYPE_RENDERED = "rendered"
SIMPLATE_TYPE_STATIC = "static"
SIMPLATE_TYPE_NEGOTIATED = "negotiated"
SIMPLATE_TYPE_JSON = "json"
)
type Simplate struct {
Filename string
Type string
ContentType string
InitPage *SimplatePage
LogicPages []*SimplatePage
}
type SimplatePage struct {
Body string
}
func SimplateFromString(filename, content string) *Simplate {
rawPages := strings.Split(content, " ")
nbreaks := len(rawPages) - 1
s := &Simplate{
Filename: filename,
Type: SIMPLATE_TYPE_STATIC,
ContentType: mime.TypeByExtension(path.Ext(filename)),
}
if nbreaks == 1 && s.ContentType == "application/json" {
s.Type = SIMPLATE_TYPE_JSON
return s
}
if nbreaks == 2 {
s.Type = SIMPLATE_TYPE_RENDERED
s.InitPage = &SimplatePage{Body: rawPages[0]}
s.LogicPages = append(s.LogicPages, &SimplatePage{Body: rawPages[1]})
return s
}
if nbreaks > 2 {
s.Type = SIMPLATE_TYPE_NEGOTIATED
return s
}
return s
}