43 lines
682 B
Go
43 lines
682 B
Go
package json
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
|
|
"code.oliverdavies.uk/opdavies/cmd-zet/internal/ansi"
|
|
)
|
|
|
|
type Item struct {
|
|
ID int `json:"id"`
|
|
Title string `json:"title"`
|
|
}
|
|
|
|
func AsJSON(zets []string) (string, error) {
|
|
var items []Item
|
|
|
|
for _, entry := range zets {
|
|
cleanEntry := ansi.StripANSI(entry)
|
|
parts := strings.SplitN(cleanEntry, " ", 2)
|
|
|
|
id, _ := strconv.Atoi(parts[0])
|
|
|
|
item := Item{
|
|
ID: id,
|
|
Title: parts[1],
|
|
}
|
|
|
|
items = append(items, item)
|
|
}
|
|
|
|
jsonData, err := json.MarshalIndent(items, "", " ")
|
|
|
|
if err != nil {
|
|
fmt.Println("Error marshaling to JSON:", err)
|
|
|
|
return "", err
|
|
}
|
|
|
|
return string(jsonData), nil
|
|
}
|