summaryrefslogtreecommitdiff
path: root/lib/util/fmt.go
diff options
context:
space:
mode:
Diffstat (limited to 'lib/util/fmt.go')
-rw-r--r--lib/util/fmt.go71
1 files changed, 0 insertions, 71 deletions
diff --git a/lib/util/fmt.go b/lib/util/fmt.go
deleted file mode 100644
index c36ba2a..0000000
--- a/lib/util/fmt.go
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright (C) 2022 Luke Shumaker <lukeshu@lukeshu.com>
-//
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-package util
-
-import (
- "fmt"
- "strings"
-)
-
-// FmtStateString returns the fmt.Printf string that produced a given
-// fmt.State and verb.
-func FmtStateString(st fmt.State, verb rune) string {
- var ret strings.Builder
- ret.WriteByte('%')
- for _, flag := range []int{'-', '+', '#', ' ', '0'} {
- if st.Flag(flag) {
- ret.WriteByte(byte(flag))
- }
- }
- if width, ok := st.Width(); ok {
- fmt.Fprintf(&ret, "%v", width)
- }
- if prec, ok := st.Precision(); ok {
- if prec == 0 {
- ret.WriteByte('.')
- } else {
- fmt.Fprintf(&ret, ".%v", prec)
- }
- }
- ret.WriteRune(verb)
- return ret.String()
-}
-
-// FormatByteArrayStringer is function for helping to implement
-// fmt.Formatter for []byte or [n]byte types that have a custom string
-// representation. Use it like:
-//
-// type MyType [16]byte
-//
-// func (val MyType) String() string {
-// …
-// }
-//
-// func (val MyType) Format(f fmt.State, verb rune) {
-// util.FormatByteArrayStringer(val, val[:], f, verb)
-// }
-func FormatByteArrayStringer(
- obj interface {
- fmt.Stringer
- fmt.Formatter
- },
- objBytes []byte,
- f fmt.State, verb rune) {
- switch verb {
- case 'v':
- if !f.Flag('#') {
- FormatByteArrayStringer(obj, objBytes, f, 's') // as a string
- } else {
- byteStr := fmt.Sprintf("%#v", objBytes)
- objType := fmt.Sprintf("%T", obj)
- objStr := objType + strings.TrimPrefix(byteStr, "[]byte")
- fmt.Fprintf(f, FmtStateString(f, 's'), objStr)
- }
- case 's', 'q': // string
- fmt.Fprintf(f, FmtStateString(f, verb), obj.String())
- default:
- fmt.Fprintf(f, FmtStateString(f, verb), objBytes)
- }
-}