rudimentary css minification
eliminate carriage returns in scripts
This commit is contained in:
parent
04a12ccd91
commit
e2293b3495
|
@ -221,7 +221,7 @@ func (list SFileList) JSTmplInit() error {
|
||||||
}`, "=[]")
|
}`, "=[]")
|
||||||
rep("o += ", "o+=")
|
rep("o += ", "o+=")
|
||||||
rep(shortName+"_frags[", "fr[")
|
rep(shortName+"_frags[", "fr[")
|
||||||
rep("function Tmpl_"+shortName+"(t_v) {","var Tmpl_"+shortName+"=(t_v)=>{")
|
rep("function Tmpl_"+shortName+"(t_v) {", "var Tmpl_"+shortName+"=(t_v)=>{")
|
||||||
|
|
||||||
fragset := tmpl.GetFrag(shortName)
|
fragset := tmpl.GetFrag(shortName)
|
||||||
if fragset != nil {
|
if fragset != nil {
|
||||||
|
@ -293,6 +293,9 @@ func (list SFileList) Init() error {
|
||||||
}
|
}
|
||||||
path = strings.TrimPrefix(path, "public/")
|
path = strings.TrimPrefix(path, "public/")
|
||||||
ext := filepath.Ext("/public/" + path)
|
ext := filepath.Ext("/public/" + path)
|
||||||
|
if ext == ".js" {
|
||||||
|
data = bytes.Replace(data, []byte("\r"), []byte(""), -1)
|
||||||
|
}
|
||||||
mimetype := mime.TypeByExtension(ext)
|
mimetype := mime.TypeByExtension(ext)
|
||||||
|
|
||||||
// Get a checksum for CSPs and cache busting
|
// Get a checksum for CSPs and cache busting
|
||||||
|
|
|
@ -133,7 +133,60 @@ func (t *Theme) LoadStaticFiles() error {
|
||||||
}
|
}
|
||||||
t.ResourceTemplates.Funcs(fmap)
|
t.ResourceTemplates.Funcs(fmap)
|
||||||
// TODO: Minify these
|
// TODO: Minify these
|
||||||
template.Must(t.ResourceTemplates.ParseGlob("./themes/" + t.Name + "/public/*.css"))
|
//template.Must(t.ResourceTemplates.ParseGlob("./themes/" + t.Name + "/public/*.css"))
|
||||||
|
fnames, err := filepath.Glob("./themes/" + t.Name + "/public/*.css")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
for _, fname := range fnames {
|
||||||
|
b, err := ioutil.ReadFile(fname)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
//b := []byte("trolololol")
|
||||||
|
//b = bytes.ReplaceAll(b, []byte{10}, []byte(""))
|
||||||
|
//b = bytes.Replace(b, []byte("\n\n"), []byte(""), -1)
|
||||||
|
//b = bytes.Replace(b, []byte("}\n."), []byte("}."), -1)
|
||||||
|
//b = bytes.Replace(b, []byte("}\n:"), []byte("}:"), -1)
|
||||||
|
s := func() string {
|
||||||
|
s := string(b)
|
||||||
|
rep := func(from, to string) {
|
||||||
|
s = strings.Replace(s, from, to, -1)
|
||||||
|
}
|
||||||
|
rep("\r", "")
|
||||||
|
rep("}\n", "}")
|
||||||
|
rep("\n{", "{")
|
||||||
|
rep("\n", "")
|
||||||
|
rep(`
|
||||||
|
`, "")
|
||||||
|
rep(": {{", ":{{")
|
||||||
|
rep("display: ", "display:")
|
||||||
|
rep("float: ", "float:")
|
||||||
|
rep("-left: ", "-left:")
|
||||||
|
rep("-right: ", "-right:")
|
||||||
|
rep("-top: ", "-top:")
|
||||||
|
rep("-bottom: ", "-bottom:")
|
||||||
|
rep("border: ", "border:")
|
||||||
|
rep("radius: ", "radius:")
|
||||||
|
rep("content: ", "content:")
|
||||||
|
rep("width: ", "width:")
|
||||||
|
rep("padding: ", "padding:")
|
||||||
|
rep("-size: ", "-size:")
|
||||||
|
return s
|
||||||
|
}()
|
||||||
|
name := filepath.Base(fname)
|
||||||
|
t := t.ResourceTemplates
|
||||||
|
var tmpl *template.Template
|
||||||
|
/*if name == t.Name() {
|
||||||
|
tmpl = t
|
||||||
|
} else {*/
|
||||||
|
tmpl = t.New(name)
|
||||||
|
//}
|
||||||
|
_, err = tmpl.Parse(s)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// It should be safe for us to load the files for all the themes in memory, as-long as the admin hasn't setup a ridiculous number of themes
|
// It should be safe for us to load the files for all the themes in memory, as-long as the admin hasn't setup a ridiculous number of themes
|
||||||
return t.AddThemeStaticFiles()
|
return t.AddThemeStaticFiles()
|
||||||
|
@ -158,6 +211,9 @@ func (t *Theme) AddThemeStaticFiles() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
ext := filepath.Ext(path)
|
ext := filepath.Ext(path)
|
||||||
|
if ext == ".js" {
|
||||||
|
data = bytes.Replace(data, []byte("\r"), []byte(""), -1)
|
||||||
|
}
|
||||||
if ext == ".css" && len(data) != 0 {
|
if ext == ".css" && len(data) != 0 {
|
||||||
var b bytes.Buffer
|
var b bytes.Buffer
|
||||||
pieces := strings.Split(path, "/")
|
pieces := strings.Split(path, "/")
|
||||||
|
@ -169,6 +225,26 @@ func (t *Theme) AddThemeStaticFiles() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
data = b.Bytes()
|
data = b.Bytes()
|
||||||
|
rep := func(from, to string) {
|
||||||
|
data = bytes.Replace(data, []byte(from), []byte(to), -1)
|
||||||
|
}
|
||||||
|
rep("\t", "")
|
||||||
|
//rep("\n\n", "")
|
||||||
|
rep("\n", "")
|
||||||
|
rep("\n", "")
|
||||||
|
rep(`
|
||||||
|
`, "")
|
||||||
|
rep("}\n.", "}.")
|
||||||
|
rep("}\n:", "}:")
|
||||||
|
rep(": #", ":#")
|
||||||
|
rep(" {", "{")
|
||||||
|
rep("{\n", "{")
|
||||||
|
rep(",\n", ",")
|
||||||
|
rep(";\n", ";")
|
||||||
|
rep(";\n}", ";}")
|
||||||
|
rep(": 0px;", ":0;")
|
||||||
|
rep("; }", ";}")
|
||||||
|
rep(", #", ",#")
|
||||||
}
|
}
|
||||||
|
|
||||||
path = strings.TrimPrefix(path, "themes/"+t.Name+"/public")
|
path = strings.TrimPrefix(path, "themes/"+t.Name+"/public")
|
||||||
|
|
Loading…
Reference in New Issue