mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-03 22:52:25 -06:00 
			
		
		
		
	
		
			
				
	
	
		
			88 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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
 | 
						|
}
 |