summaryrefslogtreecommitdiff
path: root/vendor/codeberg.org/gruf/go-format/print.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/codeberg.org/gruf/go-format/print.go')
-rw-r--r--vendor/codeberg.org/gruf/go-format/print.go88
1 files changed, 88 insertions, 0 deletions
diff --git a/vendor/codeberg.org/gruf/go-format/print.go b/vendor/codeberg.org/gruf/go-format/print.go
new file mode 100644
index 000000000..288e6af10
--- /dev/null
+++ b/vendor/codeberg.org/gruf/go-format/print.go
@@ -0,0 +1,88 @@
+package format
+
+import (
+ "io"
+ "os"
+ "sync"
+)
+
+// pool is the global printer buffer pool.
+var pool = sync.Pool{
+ New: func() interface{} {
+ return &Buffer{}
+ },
+}
+
+// getBuf fetches a buffer from pool.
+func getBuf() *Buffer {
+ return pool.Get().(*Buffer)
+}
+
+// putBuf places a Buffer back in pool.
+func putBuf(buf *Buffer) {
+ if buf.Cap() > 64<<10 {
+ return // drop large
+ }
+ buf.Reset()
+ pool.Put(buf)
+}
+
+// Sprint will format supplied values, returning this string.
+func Sprint(v ...interface{}) string {
+ buf := Buffer{}
+ Append(&buf, v...)
+ return buf.String()
+}
+
+// Sprintf will format supplied format string and args, returning this string.
+// See Formatter.Appendf() for more documentation.
+func Sprintf(s string, a ...interface{}) string {
+ buf := Buffer{}
+ Appendf(&buf, s, a...)
+ return buf.String()
+}
+
+// Print will format supplied values, print this to os.Stdout.
+func Print(v ...interface{}) {
+ Fprint(os.Stdout, v...) //nolint
+}
+
+// Printf will format supplied format string and args, printing this to os.Stdout.
+// See Formatter.Appendf() for more documentation.
+func Printf(s string, a ...interface{}) {
+ Fprintf(os.Stdout, s, a...) //nolint
+}
+
+// Println will format supplied values, append a trailing newline and print this to os.Stdout.
+func Println(v ...interface{}) {
+ Fprintln(os.Stdout, v...) //nolint
+}
+
+// Fprint will format supplied values, writing this to an io.Writer.
+func Fprint(w io.Writer, v ...interface{}) (int, error) {
+ buf := getBuf()
+ Append(buf, v...)
+ n, err := w.Write(buf.B)
+ putBuf(buf)
+ return n, err
+}
+
+// Fprintf will format supplied format string and args, writing this to an io.Writer.
+// See Formatter.Appendf() for more documentation.
+func Fprintf(w io.Writer, s string, a ...interface{}) (int, error) {
+ buf := getBuf()
+ Appendf(buf, s, a...)
+ n, err := w.Write(buf.B)
+ putBuf(buf)
+ return n, err
+}
+
+// Println will format supplied values, append a trailing newline and writer this to an io.Writer.
+func Fprintln(w io.Writer, v ...interface{}) (int, error) {
+ buf := getBuf()
+ Append(buf, v...)
+ buf.AppendByte('\n')
+ n, err := w.Write(buf.B)
+ putBuf(buf)
+ return n, err
+}