utilfn

package
v0.11.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 28, 2025 License: Apache-2.0 Imports: 27 Imported by: 0

Documentation

Index

Constants

View Source
const NoStrPos = -1

sentinel value for StrWithPos.Pos to indicate no position

Variables

View Source
var ErrOverflow = errors.New("integer overflow")
View Source
var HexDigits = []byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}

Functions

func AddElemToSliceUniq

func AddElemToSliceUniq[T comparable](arr []T, elem T) []T

func AddInt

func AddInt(left, right int) (int, error)

Add two int values, returning an error if the result overflows.

func AddIntSlice

func AddIntSlice(vals ...int) (int, error)

Add a slice of ints, returning an error if the result overflows.

func AppendNonZeroRandomBytes

func AppendNonZeroRandomBytes(b []byte, randLen int) []byte

func AtoiNoErr

func AtoiNoErr(str string) int

func AtomicRenameCopy

func AtomicRenameCopy(dstPath string, srcPath string, perms os.FileMode) error

func ByteMapsEqual

func ByteMapsEqual(m1 map[string][]byte, m2 map[string][]byte) bool

func ChunkSlice

func ChunkSlice[T any](s []T, chunkSize int) [][]T

func CombineMaps

func CombineMaps[V any](m1 map[string]V, m2 map[string]V)

will overwrite m1 with m2's values

func CombineStrArrays

func CombineStrArrays(sarr1 []string, sarr2 []string) []string

combines string arrays and removes duplicates (returns a new array)

func CompareAsFloat64 added in v0.9.0

func CompareAsFloat64(a, b any) bool

Helper to handle numeric comparisons as float64

func CompareAsMarshaledJson added in v0.11.1

func CompareAsMarshaledJson(a, b any) bool

func ContainsStr

func ContainsStr(strs []string, test string) bool

func ConvertInt added in v0.11.1

func ConvertInt(val any) int64

converts an int, int64, or float64 to an int64 nil or bad type returns 0

func ConvertMap added in v0.11.1

func ConvertMap(val any) map[string]any

func ConvertToWallClockPT added in v0.11.1

func ConvertToWallClockPT(t time.Time) time.Time

func ConvertUUIDv4Tov7 added in v0.11.1

func ConvertUUIDv4Tov7(uuidv4 string) (string, error)

func CopyToChannel

func CopyToChannel(outputCh chan<- []byte, reader io.Reader) error

does *not* close outputCh on EOF or error

func CopyWithEndBytes

func CopyWithEndBytes(outputBuf *bytes.Buffer, reader io.Reader, endBytes []byte) (bool, error)

returns (isEOF, error)

func DecodeStringArray

func DecodeStringArray(barr []byte) ([]string, error)

func DecodeStringMap

func DecodeStringMap(barr []byte) (map[string]string, error)

func DoMapStructure

func DoMapStructure(out any, input any) error

does a mapstructure using "json" tags

func DrainChannelSafe added in v0.11.1

func DrainChannelSafe[T any](ch <-chan T, debugName string)

DrainChannelSafe will drain a channel until it is empty or until a timeout is reached. WARNING: This function will panic if the channel is not drained within the timeout.

func DumpGoRoutineStacks added in v0.11.1

func DumpGoRoutineStacks()

func EllipsisStr

func EllipsisStr(s string, maxLen int) string

func EncodeStringArray

func EncodeStringArray(arr []string) []byte

func EncodeStringMap

func EncodeStringMap(m map[string]string) []byte

func EncodedStringArrayGetFirstVal

func EncodedStringArrayGetFirstVal(encoded []byte) string

on encoding error returns "" this is used to perform logic on first value without decoding the entire array

func EncodedStringArrayHasFirstVal

func EncodedStringArrayHasFirstVal(encoded []byte, firstKey string) bool

func FilterValidArch added in v0.11.0

func FilterValidArch(arch string) (string, error)

*

  • Utility function to convert know architecture patterns
  • to the patterns we use. It returns an error if the
  • provided name is unknown

func FindStringInSlice added in v0.10.0

func FindStringInSlice(slice []string, val string) int

func FormatLsTime added in v0.9.3

func FormatLsTime(t time.Time) string

func GetBool

func GetBool(v interface{}, field string) bool

func GetCmdExitCode

func GetCmdExitCode(cmd *exec.Cmd, err error) int

func GetExitCode

func GetExitCode(err error) int

func GetFirstLine

func GetFirstLine(s string) string

func GetJsonTag

func GetJsonTag(field reflect.StructField) string

func GetLineColFromOffset added in v0.8.12

func GetLineColFromOffset(barr []byte, offset int) (int, int)

func GetMapKeys

func GetMapKeys[K comparable, V any](m map[K]V) []K

func GetOrderedMapKeys

func GetOrderedMapKeys[V any](m map[string]V) []string

func GetOrderedStringerMapKeys

func GetOrderedStringerMapKeys[K interface {
	comparable
	fmt.Stringer
}, V any](m map[K]V) []K

func GetStrArr

func GetStrArr(v interface{}, field string) []string

func GracefulClose added in v0.11.1

func GracefulClose(closer io.Closer, debugName, closerName string) bool

func HasBinaryData added in v0.11.0

func HasBinaryData(data []byte) bool

func IndentString

func IndentString(indent string, str string) string

func IsNumericType added in v0.9.0

func IsNumericType(val any) bool

Helper to check if a value is a numeric type

func IsPrefix

func IsPrefix(strs []string, test string) bool

func JsonMapToStruct

func JsonMapToStruct(m map[string]any, v interface{}) error

func JsonValEqual added in v0.9.0

func JsonValEqual(a, b any) bool

this is a shallow equal, but with special handling for numeric types it will up convert to float64 and compare

func LongestPrefix

func LongestPrefix(root string, strs []string) string

func MapToStruct added in v0.9.2

func MapToStruct(in map[string]any, out any) error

func MergeStrMaps

func MergeStrMaps[T any](m1 map[string]T, m2 map[string]T) map[string]T

func MoveSliceIdxToFront

func MoveSliceIdxToFront[T any](arr []T, idx int) []T

func NullDecodeStr

func NullDecodeStr(barr []byte) (string, error)

func NullEncodeStr

func NullEncodeStr(s string) []byte

encodes a string, removing null/zero bytes (and separators '|') a zero byte is encoded as "\0", a '\' is encoded as "\\", sep is encoded as "\s" allows for easy double splitting (first on \x00, and next on "|")

func Ptr added in v0.11.0

func Ptr[T any](x T) *T

*

  • Utility function for referencing a type with a pointer.
  • This is the same as dereferencing with &, but unlike &
  • you can directly use it on the ouput of a function
  • without needing to create an intermediate variable

func QuickHashString added in v0.11.1

func QuickHashString(s string) string

func QuickJson

func QuickJson(v interface{}) string

func QuickParseJson

func QuickParseJson[T any](s string) T

func RandomHexString

func RandomHexString(numHexDigits int) (string, error)

every byte is 4-bits of randomness

func ReUnmarshal

func ReUnmarshal(out any, in any) error

func ReadLineWithTimeout added in v0.11.0

func ReadLineWithTimeout(ch chan LineOutput, timeout time.Duration) (string, error)

func RemoveElemFromSlice

func RemoveElemFromSlice[T comparable](arr []T, elem T) []T

removes an element from a slice and modifies the original slice (the backing elements) if it removes the last element from the slice, it will return nil so we free the original slice's backing memory

func SafeDeref added in v0.11.0

func SafeDeref[T any](x *T) T

*

  • Helper function that will deref a pointer if not null
  • but returns a default value if it is null.

func SendWithCtxCheck added in v0.11.1

func SendWithCtxCheck[T any](ctx context.Context, ch chan<- T, val T) bool

func Sha1Hash

func Sha1Hash(data []byte) string

returns base64 hash of data

func ShellHexEscape

func ShellHexEscape(s string) string

returns hex escaped string (\xNN for each byte)

func ShellQuote

func ShellQuote(val string, forceQuote bool, maxLen int) string

minimum maxlen=6, pass -1 for no max length

func SliceIdx

func SliceIdx[T comparable](arr []T, elem T) int

func SortStringRunes

func SortStringRunes(s string) string

func StarMatchString

func StarMatchString(pattern string, s string, delimiter string) bool

matches a delimited string with a pattern string the pattern string can contain "*" to match a single part, or "**" to match the rest of the string note that "**" may only appear at the end of the string

func StrArrayToMap

func StrArrayToMap(sarr []string) map[string]bool

func StrMapsEqual

func StrMapsEqual(m1 map[string]string, m2 map[string]string) bool

func StreamToLines added in v0.11.0

func StreamToLines(input io.Reader, lineFn func([]byte)) error

func StreamToLinesChan added in v0.11.0

func StreamToLinesChan(input io.Reader) chan LineOutput

starts a goroutine to drive the channel line output does not include the trailing newline

func StrsEqual

func StrsEqual(s1arr []string, s2arr []string) bool

func StructToJsonMap

func StructToJsonMap(v interface{}) (map[string]any, error)

func StructToMap added in v0.9.2

func StructToMap(in any) (map[string]any, error)

func TimeoutFromContext added in v0.11.0

func TimeoutFromContext(ctx context.Context, defaultTimeout time.Duration) time.Duration

func ToFloat64 added in v0.9.0

func ToFloat64(val any) (float64, bool)

Convert various numeric types to float64 for comparison

func ToInt added in v0.9.2

func ToInt(val any) (int, bool)

func ToInt64 added in v0.9.2

func ToInt64(val any) (int64, bool)

func ToStr added in v0.9.2

func ToStr(val any) (string, bool)

func WriteFileIfDifferent added in v0.8.7

func WriteFileIfDifferent(fileName string, contents []byte) (bool, error)

func WriteTemplateToFile

func WriteTemplateToFile(fileName string, templateText string, vars map[string]string) error

Types

type LineOutput added in v0.11.0

type LineOutput struct {
	Line  string
	Error error
}

type StrWithPos

type StrWithPos struct {
	Str string `json:"str"`
	Pos int    `json:"pos"` // this is a 'rune' position (not a byte position)
}

func ParseToSP

func ParseToSP(s string) StrWithPos

func (StrWithPos) Append

func (sp StrWithPos) Append(str string) StrWithPos

func (StrWithPos) Prepend

func (sp StrWithPos) Prepend(str string) StrWithPos

func (StrWithPos) String

func (sp StrWithPos) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳