From a854dd06189c2e55074e0b7e28fd5619955266de Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Sat, 31 Aug 2024 22:37:05 -0400 Subject: [PATCH] Add String methods for structures --- asv.go | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/asv.go b/asv.go index c1d1f28..6b4f3a0 100644 --- a/asv.go +++ b/asv.go @@ -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'