Add String methods for structures

This commit is contained in:
Sasha Koshka 2024-08-31 22:37:05 -04:00
parent bb9e317fa7
commit a854dd0618

45
asv.go
View File

@ -4,6 +4,7 @@ package asv
import "io"
import "bufio"
import "strings"
import "strconv"
// Collection is composed of Files.
type Collection []File
@ -16,6 +17,50 @@ type Record []Unit
// Unit is an element of a record.
type Unit string
func (collection Collection) String () string {
builder := strings.Builder { }
builder.WriteString("Collection { ")
for index, file := range collection {
if index > 0 { builder.WriteString(", ") }
builder.WriteString(file.String())
}
builder.WriteString(" }")
return builder.String()
}
func (file File) String () string {
builder := strings.Builder { }
builder.WriteString("File { ")
for index, group := range file {
if index > 0 { builder.WriteString(", ") }
builder.WriteString(group.String())
}
builder.WriteString(" }")
return builder.String()
}
func (group Group) String () string {
builder := strings.Builder { }
builder.WriteString("Group { ")
for index, record := range group {
if index > 0 { builder.WriteString(", ") }
builder.WriteString(record.String())
}
builder.WriteString(" }")
return builder.String()
}
func (record Record) String () string {
builder := strings.Builder { }
builder.WriteString("Record { ")
for index, unit := range record {
if index > 0 { builder.WriteString(", ") }
builder.WriteString(strconv.Quote(string(unit)))
}
builder.WriteString(" }")
return builder.String()
}
const (
Escape rune = '\x1B'
FileSeparator rune = '\x1C'