mu

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Sep 4, 2024 License: MIT Imports: 17 Imported by: 0

README

mu

Documentation

Overview

string utilities borrowed from: https://github.com/hashicorp/vault/blob/master/sdk/helper/strutil

Index

Constants

This section is empty.

Variables

View Source
var DefaultArgon2Params = Argon2Params{
	Time:    20,
	Memory:  4 * 1024,
	Threads: 1,
	KeyLen:  32,
}

Results in about 40ms generation time on a 2020 MBA Only 1MB, much less than the 64MB standard

Functions

func AppendIfMissing

func AppendIfMissing(slice []string, i string) []string

AppendIfMissing adds a string to a slice if the given string is not present

func Base64Decode

func Base64Decode(src []byte) ([]byte, error)

func Base64Encode

func Base64Encode(src []byte) []byte

func Decrypt

func Decrypt(data, key []byte) ([]byte, error)

func DeriveKey

func DeriveKey(password string, salt []byte, customParams ...Argon2Params) ([]byte, []byte)

func Difference

func Difference(a, b []string, lowercase bool) []string

Difference returns the set difference (A - B) of the two given slices. The result will also remove any duplicated values in set A regardless of whether that matches any values in set B.

func Encrypt

func Encrypt(data, key []byte) []byte

func EqualStringMaps

func EqualStringMaps(a, b map[string]string) bool

EqualStringMaps tests whether two map[string]string objects are equal. Equal means both maps have the same sets of keys and values. This function is 6-10x faster than a call to reflect.DeepEqual().

func EquivalentSlices

func EquivalentSlices(a, b []string) bool

EquivalentSlices checks whether the given string sets are equivalent, as in, they contain the same values.

func GlobbedStringsMatch

func GlobbedStringsMatch(item, val string) bool

GlobbedStringsMatch compares item to val with support for a leading and/or trailing wildcard '*' in item.

func IntFromPtr

func IntFromPtr(s *int) (result int)

func IntPtr

func IntPtr(i int) *int

func MSI

func MSI(args ...interface{}) map[string]interface{}

func MergeSlices

func MergeSlices(args ...[]string) []string

MergeSlices adds an arbitrary number of slices together, uniquely

func NowTrunc

func NowTrunc() time.Time

func PanicErr

func PanicErr(err error)

func ParseArbitraryStringSlice

func ParseArbitraryStringSlice(input string, sep string) []string

ParseArbitraryStringSlice parses arbitrary string slice. The input can be one of the following: * JSON string * Base64 encoded JSON string * `sep` separated list of values * Base64-encoded string containing a `sep` separated list of values

Note that the separator is ignored if the input is found to already be in a structured format (e.g., JSON)

The output will always be a valid slice but may be of length zero.

func ParseDedupAndSortStrings

func ParseDedupAndSortStrings(input string, sep string) []string

ParseDedupAndSortStrings parses a comma separated list of strings into a slice of strings. The return slice will be sorted and will not contain duplicate or empty items.

func ParseDedupLowercaseAndSortStrings

func ParseDedupLowercaseAndSortStrings(input string, sep string) []string

ParseDedupLowercaseAndSortStrings parses a comma separated list of strings into a slice of strings. The return slice will be sorted and will not contain duplicate or empty items. The values will be converted to lower case.

func ParseKeyValues

func ParseKeyValues(input string, out map[string]string, sep string) error

ParseKeyValues parses a comma separated list of `<key>=<value>` tuples into a map[string]string.

func ParseStringSlice

func ParseStringSlice(input string, sep string) []string

ParseStringSlice parses a `sep`-separated list of strings into a []string with surrounding whitespace removed.

The output will always be a valid slice but may be of length zero.

func RandBytes

func RandBytes(length int) []byte

func RandString

func RandString(length int) string

func ReadFile

func ReadFile(filename string) []byte

func RemoveDuplicates

func RemoveDuplicates(items []string, lowercase bool) []string

RemoveDuplicates removes duplicate and empty elements from a slice of strings. This also may convert the items in the slice to lower case and returns a sorted slice.

func RemoveDuplicatesStable

func RemoveDuplicatesStable(items []string, caseInsensitive bool) []string

RemoveDuplicatesStable removes duplicate and empty elements from a slice of strings, preserving order (and case) of the original slice. In all cases, strings are compared after trimming whitespace If caseInsensitive, strings will be compared after ToLower()

func RemoveEmpty

func RemoveEmpty(items []string) []string

RemoveEmpty removes empty elements from a slice of strings

func SplitExt

func SplitExt(s string) (string, string)

func StrFromPtr

func StrFromPtr(s *string) string

func StrListContains

func StrListContains(haystack []string, needle string) bool

StrListContains looks for a string in a list of strings.

func StrListContainsGlob

func StrListContainsGlob(haystack []string, needle string) bool

StrListContainsGlob looks for a string in a list of strings and allows globs.

func StrListDelete

func StrListDelete(s []string, d string) []string

StrListDelete removes the first occurrence of the given item from the slice of strings if the item exists.

func StrListSubset

func StrListSubset(super, sub []string) bool

StrListSubset checks if a given list is a subset of another set

func StrPtr

func StrPtr(s string) *string

func StrPtrOrNil

func StrPtrOrNil(s string) *string

func TrimStrings

func TrimStrings(items []string) []string

TrimStrings takes a slice of strings and returns a slice of strings with trimmed spaces

func WriteFile

func WriteFile(filename string, data []byte, perm os.FileMode)

Types

type Argon2Params

type Argon2Params struct {
	Time    uint32
	Memory  uint32
	Threads uint8
	KeyLen  uint32
}

type Cache

type Cache[K comparable, V any] struct {
	// contains filtered or unexported fields
}

func NewCache

func NewCache[K comparable, V any]() *Cache[K, V]

func (*Cache[K, V]) Add

func (c *Cache[K, V]) Add(key K, val V)

func (*Cache[K, V]) Cap

func (c *Cache[K, V]) Cap(cap int) *Cache[K, V]

func (*Cache[K, V]) Clear

func (c *Cache[K, V]) Clear()

func (*Cache[K, V]) Get

func (c *Cache[K, V]) Get(key K) (val V, ok bool)

func (*Cache[K, V]) KeepAlive

func (c *Cache[K, V]) KeepAlive(keepAlive bool) *Cache[K, V]

func (*Cache[K, V]) Remove

func (c *Cache[K, V]) Remove(key K)

func (*Cache[K, V]) TTL

func (c *Cache[K, V]) TTL(ttl time.Duration) *Cache[K, V]

type Time

type Time struct {
	time.Time
	// contains filtered or unexported fields
}

func (*Time) Advance

func (t *Time) Advance(d time.Duration)

func (*Time) Clear

func (t *Time) Clear()

func (*Time) Now

func (t *Time) Now() time.Time

func (*Time) NowTrunc

func (t *Time) NowTrunc() time.Time

func (*Time) Rewind

func (t *Time) Rewind(d time.Duration)

func (*Time) Set

func (t *Time) Set(override time.Time)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL