/
assets.go
60 lines (51 loc) · 1.36 KB
/
assets.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
package assets
import (
"strings"
"qlova.org/seed"
"qlova.org/seed/assets/inbed"
"qlova.org/seed/client"
"qlova.org/seed/client/clientfmt"
"qlova.org/seed/client/clientside"
"qlova.org/seed/use/js"
)
func init() {
inbed.PackageName = "assets"
inbed.ImporterName = "assets.go"
}
func init() {
client.RegisterRenderer(func(c seed.Seed) []byte {
return []byte(`
seed.asset = function(src) {
if (!src.startsWith("/") && !src.startsWith("http")) {
return "/assets/"+src;
}
return src;
};
`)
})
}
//In returns the assets within the given folder.
func In(folder string) []string {
return inbed.List("." + Path(folder))
}
//Path returns the correct path from the given base path.
func Path(src string) string {
//New(src)
if !strings.HasPrefix(src, "/") && !strings.HasPrefix(src, "http") &&
!strings.HasPrefix(src, "assets") && !strings.HasPrefix(src, "/assets") {
return "/assets/" + src
}
return src
}
//PathOf returns the correct path from the given base path.
func PathOf(src client.String) client.String {
switch p := src.(type) {
case clientfmt.String:
return clientfmt.NewString(js.String{Value: js.Func("seed.asset").Call(p)}, p)
case *clientside.String:
return clientfmt.NewString(js.String{Value: js.Func("seed.asset").Call(p)}, p)
case client.String:
return js.String{Value: js.Func("seed.asset").Call(p)}
}
return nil
}