mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-03 23:22:25 -06:00 
			
		
		
		
	* start moving to bun * changing more stuff * more * and yet more * tests passing * seems stable now * more big changes * small fix * little fixes
		
			
				
	
	
		
			43 lines
		
	
	
	
		
			709 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
	
		
			709 B
		
	
	
	
		
			Go
		
	
	
	
	
	
package internal
 | 
						|
 | 
						|
import (
 | 
						|
	fasthex "github.com/tmthrgd/go-hex"
 | 
						|
)
 | 
						|
 | 
						|
type HexEncoder struct {
 | 
						|
	b       []byte
 | 
						|
	written bool
 | 
						|
}
 | 
						|
 | 
						|
func NewHexEncoder(b []byte) *HexEncoder {
 | 
						|
	return &HexEncoder{
 | 
						|
		b: b,
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (enc *HexEncoder) Bytes() []byte {
 | 
						|
	return enc.b
 | 
						|
}
 | 
						|
 | 
						|
func (enc *HexEncoder) Write(b []byte) (int, error) {
 | 
						|
	if !enc.written {
 | 
						|
		enc.b = append(enc.b, '\'')
 | 
						|
		enc.b = append(enc.b, `\x`...)
 | 
						|
		enc.written = true
 | 
						|
	}
 | 
						|
 | 
						|
	i := len(enc.b)
 | 
						|
	enc.b = append(enc.b, make([]byte, fasthex.EncodedLen(len(b)))...)
 | 
						|
	fasthex.Encode(enc.b[i:], b)
 | 
						|
 | 
						|
	return len(b), nil
 | 
						|
}
 | 
						|
 | 
						|
func (enc *HexEncoder) Close() error {
 | 
						|
	if enc.written {
 | 
						|
		enc.b = append(enc.b, '\'')
 | 
						|
	} else {
 | 
						|
		enc.b = append(enc.b, "NULL"...)
 | 
						|
	}
 | 
						|
	return nil
 | 
						|
}
 |