/
datreader.go
60 lines (53 loc) · 1.29 KB
/
datreader.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 gotils
import (
"strings"
// "fmt"
"github.com/djimenez/iconv-go"
"html"
)
type DatReads []DatRead
type DatRead struct {
Name string
ReadAt ReadAt
}
type ReadAt struct {
StartAt int
EndAt int
}
func DatReader(data string, prefix DatReads) map[string]interface{} {
str := make(map[string]interface{})
for _, q := range prefix {
get := strings.TrimSpace(data[q.ReadAt.StartAt: q.ReadAt.EndAt])
if get == "" {
str[q.Name] = ""
continue
}
}
return str
}
func DatReaderDecode(data string, prefix DatReads, decodeFrom string, decodeTo string) map[string]interface{} {
m := make(map[string]interface{})
for _, q := range prefix {
get := strings.TrimSpace(data[q.ReadAt.StartAt: q.ReadAt.EndAt])
if get == "" {
m[q.Name] = ""
continue
}
str, _ := iconv.ConvertString(get, decodeFrom, decodeTo)
m[q.Name] = str
}
return m
}
func DatToSliceDecode(data string, prefix DatReads, decodeFrom string, decodeTo string) []string {
m := []string{}
for _, q := range prefix {
get := strings.TrimSpace(data[q.ReadAt.StartAt: q.ReadAt.EndAt])
if get == "" {
m = append(m, "NULL")
continue
}
str, _ := iconv.ConvertString(get, decodeFrom, decodeTo)
m = append(m, html.EscapeString(str))
}
return m
}