utilfn

package
v0.9.2-beta.1 Latest Latest
Warning

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

Go to latest
Published: Nov 11, 2024 License: Apache-2.0 Imports: 26 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'}
View Source
var StaticMimeTypeMap = map[string]string{}/* 1254 elements not displayed */

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 ContainsStr

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

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 DetectMimeType

func DetectMimeType(path string, fileInfo fs.FileInfo, extended bool) string

on error just returns "" does not return "application/octet-stream" as this is considered a detection failure can pass an existing fileInfo to avoid re-statting the file

func DoMapStructure

func DoMapStructure(out any, input any) error

does a mapstructure using "json" tags

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 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 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 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 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 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

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 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 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 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