-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathresources.go
101 lines (82 loc) · 2.1 KB
/
resources.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
package main
import (
"bytes"
"embed"
"fmt"
"html/template"
"io"
"log"
dice "git.cmcode.dev/cmcode/go-dicewarelib"
"github.com/tdewolff/minify/v2"
"github.com/tdewolff/minify/v2/css"
"github.com/tdewolff/minify/v2/html"
)
func getMinifier() *minify.M {
m := minify.New()
m.AddFunc("text/css", css.Minify)
m.AddFunc("text/html", html.Minify)
return m
}
func getFromEmbed(fs embed.FS, path string) ([]byte, error) {
var b []byte
f, err := fs.Open(path)
if err != nil {
return b, fmt.Errorf("failed to get from embed: %w", err)
}
defer f.Close()
b, err = io.ReadAll(f)
if err != nil {
return b, fmt.Errorf("failed to read all from embed: %w", err)
}
return b, nil
}
func loadResources() {
m := getMinifier()
{
var err error
var indexr []byte // The unminified index.html template
indexr, err = getFromEmbed(content, pathIndex)
if err != nil {
log.Fatalf("failed to load from %v: %v", pathIndex, err.Error())
}
ib := bytes.NewBuffer(indexr)
ob := bytes.NewBuffer([]byte{})
err = m.Minify("text/html", ob, ib)
if err != nil {
log.Fatalf("failed to minify index: %v", err.Error())
}
i := ob.String()
Index, err = template.New(pathIndex).Parse(i)
if err != nil {
log.Fatalf("failed to parse index html template: %v", err.Error())
}
log.Printf("minified index.html (%v/%v bytes)", len(i), len(indexr))
}
{
var err error
var stylesr []byte // The unminified styles.css
stylesr, err = getFromEmbed(static, pathStyles)
if err != nil {
log.Fatalf("failed to load from %v: %v", pathStyles, err.Error())
}
ib := bytes.NewBuffer(stylesr)
ob := bytes.NewBuffer([]byte{})
err = m.Minify("text/css", ob, ib)
if err != nil {
log.Fatalf("failed to minify styles: %v", err.Error())
}
styles = ob.Bytes()
log.Printf("minified styles (%v/%v bytes)", len(styles), len(stylesr))
}
{
simples, scount := dice.GetWords(content, simple)
Words = &dice.Words{}
Words.Simple = &simples
Words.SimpleCount = scount
if flagExtra {
complexs, ccount := dice.GetWords(content, complex)
Words.Complex = &complexs
Words.ComplexCount = ccount
}
}
}