package zapslog
import (
)
func ( []zapcore.Field) []slog.Attr {
var objectEncoder
for , := range {
.AddTo(&)
}
return .attrs()
}
type namespace struct {
name string
entries []slog.Attr
child *namespace
}
func ( *namespace) () []slog.Attr {
if .child == nil {
return .entries
}
:= append(make([]slog.Attr, 0, len(.entries)+1), .entries...)
return append(, slog.GroupAttrs(.child.name, .child.()...))
}
type objectEncoder struct {
root namespace
current *namespace
}
func ( *objectEncoder) () []slog.Attr {
return .root.attrs()
}
func ( *objectEncoder) () {
if .current == nil {
.current = &.root
}
}
func ( *objectEncoder) ( slog.Attr) {
.init()
.current.entries = append(.current.entries, )
}
func ( *objectEncoder) ( string) {
.init()
:= &namespace{name: }
.current.child =
.current =
}
func ( *objectEncoder) ( string, zapcore.ArrayMarshaler) error {
var arrayEncoder
:= .MarshalLogArray(&)
.addAttr(slog.GroupAttrs(, .attrs...))
return
}
func ( *objectEncoder) ( string, zapcore.ObjectMarshaler) error {
var objectEncoder
:= .MarshalLogObject(&)
.addAttr(slog.GroupAttrs(, .attrs()...))
return
}
func ( *objectEncoder) ( string, []byte) {
.addAttr(slog.Any(, ))
}
func ( *objectEncoder) ( string, []byte) {
.addAttr(slog.String(, string()))
}
func ( *objectEncoder) ( string, bool) {
.addAttr(slog.Bool(, ))
}
func ( *objectEncoder) ( string, complex128) {
.addAttr(slog.Any(, ))
}
func ( *objectEncoder) ( string, complex64) {
.addAttr(slog.Any(, ))
}
func ( *objectEncoder) ( string, time.Duration) {
.addAttr(slog.Duration(, ))
}
func ( *objectEncoder) ( string, float64) {
.addAttr(slog.Float64(, ))
}
func ( *objectEncoder) ( string, float32) {
.addAttr(slog.Float64(, float64()))
}
func ( *objectEncoder) ( string, int) {
.addAttr(slog.Int(, ))
}
func ( *objectEncoder) ( string, int64) {
.addAttr(slog.Int64(, ))
}
func ( *objectEncoder) ( string, int32) {
.addAttr(slog.Int64(, int64()))
}
func ( *objectEncoder) ( string, int16) {
.addAttr(slog.Int64(, int64()))
}
func ( *objectEncoder) ( string, int8) {
.addAttr(slog.Int64(, int64()))
}
func ( *objectEncoder) (, string) {
.addAttr(slog.String(, ))
}
func ( *objectEncoder) ( string, time.Time) {
.addAttr(slog.Time(, ))
}
func ( *objectEncoder) ( string, uint) {
.addAttr(slog.Uint64(, uint64()))
}
func ( *objectEncoder) ( string, uint64) {
.addAttr(slog.Uint64(, ))
}
func ( *objectEncoder) ( string, uint32) {
.addAttr(slog.Uint64(, uint64()))
}
func ( *objectEncoder) ( string, uint16) {
.addAttr(slog.Uint64(, uint64()))
}
func ( *objectEncoder) ( string, uint8) {
.addAttr(slog.Uint64(, uint64()))
}
func ( *objectEncoder) ( string, uintptr) {
.addAttr(slog.Uint64(, uint64()))
}
func ( *objectEncoder) ( string, any) error {
.addAttr(slog.Any(, ))
return nil
}
type arrayEncoder struct {
attrs []slog.Attr
}
func ( *arrayEncoder) ( slog.Value) {
.attrs = append(.attrs, slog.Attr{
Key: strconv.Itoa(len(.attrs)),
Value: ,
})
}
func ( *arrayEncoder) ( zapcore.ArrayMarshaler) error {
var arrayEncoder
:= .MarshalLogArray(&)
.appendValue(slog.GroupValue(.attrs...))
return
}
func ( *arrayEncoder) ( zapcore.ObjectMarshaler) error {
var objectEncoder
:= .MarshalLogObject(&)
.appendValue(slog.GroupValue(.attrs()...))
return
}
func ( *arrayEncoder) ( any) error {
.appendValue(slog.AnyValue())
return nil
}
func ( *arrayEncoder) ( bool) {
.appendValue(slog.BoolValue())
}
func ( *arrayEncoder) ( []byte) {
.appendValue(slog.StringValue(string()))
}
func ( *arrayEncoder) ( complex128) {
.appendValue(slog.AnyValue())
}
func ( *arrayEncoder) ( complex64) {
.appendValue(slog.AnyValue())
}
func ( *arrayEncoder) ( time.Duration) {
.appendValue(slog.DurationValue())
}
func ( *arrayEncoder) ( float64) {
.appendValue(slog.Float64Value())
}
func ( *arrayEncoder) ( float32) {
.appendValue(slog.Float64Value(float64()))
}
func ( *arrayEncoder) ( int) {
.appendValue(slog.Int64Value(int64()))
}
func ( *arrayEncoder) ( int64) {
.appendValue(slog.Int64Value())
}
func ( *arrayEncoder) ( int32) {
.appendValue(slog.Int64Value(int64()))
}
func ( *arrayEncoder) ( int16) {
.appendValue(slog.Int64Value(int64()))
}
func ( *arrayEncoder) ( int8) {
.appendValue(slog.Int64Value(int64()))
}
func ( *arrayEncoder) ( string) {
.appendValue(slog.StringValue())
}
func ( *arrayEncoder) ( time.Time) {
.appendValue(slog.TimeValue())
}
func ( *arrayEncoder) ( uint) {
.appendValue(slog.Uint64Value(uint64()))
}
func ( *arrayEncoder) ( uint64) {
.appendValue(slog.Uint64Value())
}
func ( *arrayEncoder) ( uint32) {
.appendValue(slog.Uint64Value(uint64()))
}
func ( *arrayEncoder) ( uint16) {
.appendValue(slog.Uint64Value(uint64()))
}
func ( *arrayEncoder) ( uint8) {
.appendValue(slog.Uint64Value(uint64()))
}
func ( *arrayEncoder) ( uintptr) {
.appendValue(slog.Uint64Value(uint64()))
}