/
formatters.go
71 lines (60 loc) · 1.46 KB
/
formatters.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
package formatters
import (
"fmt"
"strings"
"github.com/mroach/rom64/rom"
)
var OutputFormats = []string{"csv", "tab", "json", "table", "text", "xml"}
func DefaultColumns(outputFormat string) []string {
switch outputFormat {
case "csv", "tab":
return DefaultCsvColumns
case "table":
return DefaultTableColumns
}
return make([]string, 0)
}
func PrintAll(items []rom.RomFile, outputFormat string, columns []string) error {
switch outputFormat {
case "csv":
return PrintCsv(items, ',', columns)
case "tab":
return PrintCsv(items, '\t', columns)
case "json":
return PrintJson(items)
case "table":
return PrintTable(items, columns)
case "text":
hr := strings.Repeat("-", 80)
count := len(items)
for i, item := range items {
if err := PrintText(item); err != nil {
return err
}
if i+1 < count {
fmt.Println(hr)
}
}
return nil
case "xml":
return PrintXml(items)
}
return fmt.Errorf("Invalid output format '%s'", outputFormat)
}
func PrintOne(item rom.RomFile, outputFormat string, columns []string) error {
switch outputFormat {
case "csv":
return PrintCsv([]rom.RomFile{item}, ',', columns)
case "tab":
return PrintCsv([]rom.RomFile{item}, '\t', columns)
case "json":
return PrintJson(item)
case "table":
return PrintTable([]rom.RomFile{item}, columns)
case "text":
return PrintText(item)
case "xml":
return PrintXml([]rom.RomFile{item})
}
return fmt.Errorf("Invalid output format '%s'", outputFormat)
}