/
loader.go
51 lines (40 loc) · 1004 Bytes
/
loader.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
package main
import (
"github.com/boomlinde/teletext"
"io/ioutil"
"path"
"regexp"
"strconv"
"strings"
)
func loadfiles(p string) map[string]anim {
files, err := ioutil.ReadDir(p)
fatal(err)
matcher, err := regexp.Compile("[a-z][0-9]+_[0-9]+\\.ttv")
fatal(err)
matches := []string{}
for _, s := range files {
if matcher.MatchString(strings.ToLower(path.Base(s.Name()))) {
matches = append(matches, path.Join(p, s.Name()))
}
}
anims := map[string]anim{}
for _, m := range matches {
name := path.Base(m)
fields := strings.Split(name[1:], "_")
index, err := strconv.Atoi(fields[0])
fatal(err)
length, err := strconv.Atoi(fields[1][:len(fields[1])-4])
fatal(err)
data, err := ioutil.ReadFile(m)
fatal(err)
ttxframe := teletext.ConvertTTV("televj", 100, data)
key := strings.ToLower(string(name[0]))
_, ok := anims[key]
if !ok {
anims[key] = anim{}
}
anims[key] = append(anims[key], frame{index, length, ttxframe.Serialize()})
}
return anims
}