mirror of
https://github.com/luxfi/compress.git
synced 2026-10-30 16:59:35 +00:00
55 lines
974 B
Go
55 lines
974 B
Go
// Copyright (C) 2019-2025, Lux Industries, Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package compress
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
)
|
|
|
|
var errUnknownCompressionType = errors.New("unknown compression type")
|
|
|
|
type Type byte
|
|
|
|
const (
|
|
TypeNone Type = iota + 1
|
|
TypeZstd
|
|
)
|
|
|
|
func (t Type) String() string {
|
|
switch t {
|
|
case TypeNone:
|
|
return "none"
|
|
case TypeZstd:
|
|
return "zstd"
|
|
default:
|
|
return "unknown"
|
|
}
|
|
}
|
|
|
|
func TypeFromString(s string) (Type, error) {
|
|
switch s {
|
|
case TypeNone.String():
|
|
return TypeNone, nil
|
|
case TypeZstd.String():
|
|
return TypeZstd, nil
|
|
default:
|
|
return TypeNone, errUnknownCompressionType
|
|
}
|
|
}
|
|
|
|
func (t Type) MarshalJSON() ([]byte, error) {
|
|
var b strings.Builder
|
|
if _, err := b.WriteString(`"`); err != nil {
|
|
return nil, err
|
|
}
|
|
if _, err := b.WriteString(t.String()); err != nil {
|
|
return nil, err
|
|
}
|
|
if _, err := b.WriteString(`"`); err != nil {
|
|
return nil, err
|
|
}
|
|
return []byte(b.String()), nil
|
|
}
|