utils

package
v0.0.0-...-8fc5405 Latest Latest
Warning

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

Go to latest
Published: May 1, 2023 License: MIT Imports: 29 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func AsJson

func AsJson(i interface{}) string

func Clamp

func Clamp(x int, min int, max int) int

func Decolorise

func Decolorise(str string) string

Decolorise strips a string of color

func EscapeSpecialChars

func EscapeSpecialChars(str string) string

EscapeSpecialChars - Replaces all special chars like \n with \\n

func FilePath

func FilePath(skip int) string

returns the path of the file that calls the function. 'skip' is the number of stack frames to skip.

func FindNamedMatches

func FindNamedMatches(regex *regexp.Regexp, str string) map[string]string

func FindStringSubmatch

func FindStringSubmatch(str string, regexpStr string) (bool, []string)

func ForEachLineInFile

func ForEachLineInFile(path string, f func(string, int)) error

func FuzzySearch

func FuzzySearch(needle string, haystack []string) []string

func GetCurrentRepoName

func GetCurrentRepoName() string

GetCurrentRepoName gets the repo's base name

func GetProjectRoot

func GetProjectRoot() string

GetProjectRoot returns the path to the root of the project. Only to be used in testing contexts, as with binaries it's unlikely this path will exist on the machine

func IsValidHexValue

func IsValidHexValue(v string) bool

func Limit

func Limit(values []string, limit int) []string

func LimitStr

func LimitStr(value string, limit int) string

func Loader

func Loader() string

Loader dumps a string to be displayed as a loader

func Max

func Max(x, y int) int

func Min

func Min(x, y int) int

Min returns the minimum of two integers

func ModuloWithWrap

func ModuloWithWrap(n, max int) int

used to keep a number n between 0 and max, allowing for wraparounds

func MoveElement

func MoveElement[T any](slice []T, from int, to int) []T

Returns a new slice with the element at index 'from' moved to index 'to'. Does not mutate original slice.

func MoveTodoDown

func MoveTodoDown(fileName string, sha string, action todo.TodoCommand) error

func MoveTodoUp

func MoveTodoUp(fileName string, sha string, action todo.TodoCommand) error

func MuiltiGroupBy

func MuiltiGroupBy[T any, K comparable](slice []T, f func(T) []K) map[K][]T

Similar to a regular GroupBy, except that each item can be grouped under multiple keys, so the callback returns a slice of keys instead of just one key.

func MustConvertToInt

func MustConvertToInt(s string) int

func NewDummyCommon

func NewDummyCommon() *common.Common

func NewDummyCommonWithUserConfig

func NewDummyCommonWithUserConfig(userConfig *config.UserConfig) *common.Common

func NewDummyLog

func NewDummyLog() *logrus.Entry

NewDummyLog creates a new dummy Log for testing

func NextIndex

func NextIndex(numbers []int, currentNumber int) int

NextIndex returns the index of the element that comes after the given number

func NextIntInCycle

func NextIntInCycle(sl []int, current int) int

NextIntInCycle returns the next int in a slice, returning to the first index if we've reached the end

func NormalizeLinefeeds

func NormalizeLinefeeds(str string) string

NormalizeLinefeeds - Removes all Windows and Mac style line feeds

func PrevIndex

func PrevIndex(numbers []int, currentNumber int) int

PrevIndex returns the index that comes before the given number, cycling if we reach the end

func PrevIntInCycle

func PrevIntInCycle(sl []int, current int) int

PrevIntInCycle returns the prev int in a slice, returning to the first index if we've reached the end

func ReadRebaseTodoFile

func ReadRebaseTodoFile(fileName string) ([]todo.Todo, error)

func RenderDisplayStrings

func RenderDisplayStrings(displayStringsArr [][]string) string

func ResolvePlaceholderString

func ResolvePlaceholderString(str string, arguments map[string]string) string

ResolvePlaceholderString populates a template with values

func ResolveTemplate

func ResolveTemplate(templateStr string, object interface{}, funcs template.FuncMap) (string, error)

func Safe

func Safe(f func())

Safe will close tcell if a panic occurs so that we don't end up in a malformed terminal state

func SafeTruncate

func SafeTruncate(str string, limit int) string

func SafeWithError

func SafeWithError(f func() error) error

func SetCustomColors

func SetCustomColors(customColors map[string]string) map[string]style.TextStyle

func ShortSha

func ShortSha(sha string) string

func SplitLines

func SplitLines(multilineString string) []string

SplitLines takes a multiline string and splits it on newlines currently we are also stripping \r's which may have adverse effects for windows users (but no issues have been raised yet)

func SplitNul

func SplitNul(str string) []string

func StackTrace

func StackTrace() string

func StringArraysOverlap

func StringArraysOverlap(strArrA []string, strArrB []string) bool

func TruncateWithEllipsis

func TruncateWithEllipsis(str string, limit int) string

TruncateWithEllipsis returns a string, truncated to a certain length, with an ellipsis

func UnixToDate

func UnixToDate(timestamp int64, timeFormat string) string

func UnixToTimeAgo

func UnixToTimeAgo(timestamp int64) string

func WithPadding

func WithPadding(str string, padding int) string

WithPadding pads a string as much as you want

func WrapError

func WrapError(err error) error

WrapError wraps an error for the sake of showing a stack trace at the top level the go-errors package, for some reason, does not return nil when you try to wrap a non-error, so we're just doing it here

func WriteRebaseTodoFile

func WriteRebaseTodoFile(fileName string, todos []todo.Todo) error

Types

type OnceWriter

type OnceWriter struct {
	// contains filtered or unexported fields
}

func NewOnceWriter

func NewOnceWriter(writer io.Writer, f func()) *OnceWriter

func (*OnceWriter) Write

func (self *OnceWriter) Write(p []byte) (n int, err error)

type StringStack

type StringStack struct {
	// contains filtered or unexported fields
}

func (*StringStack) Clear

func (self *StringStack) Clear()

func (*StringStack) IsEmpty

func (self *StringStack) IsEmpty() bool

func (*StringStack) Pop

func (self *StringStack) Pop() string

func (*StringStack) Push

func (self *StringStack) Push(s string)

type ThreadSafeMap

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

func NewThreadSafeMap

func NewThreadSafeMap[K comparable, V any]() *ThreadSafeMap[K, V]

func (*ThreadSafeMap[K, V]) Clear

func (m *ThreadSafeMap[K, V]) Clear()

func (*ThreadSafeMap[K, V]) Delete

func (m *ThreadSafeMap[K, V]) Delete(key K)

func (*ThreadSafeMap[K, V]) Get

func (m *ThreadSafeMap[K, V]) Get(key K) (V, bool)

func (*ThreadSafeMap[K, V]) Has

func (m *ThreadSafeMap[K, V]) Has(key K) bool

func (*ThreadSafeMap[K, V]) IsEmpty

func (m *ThreadSafeMap[K, V]) IsEmpty() bool

func (*ThreadSafeMap[K, V]) Keys

func (m *ThreadSafeMap[K, V]) Keys() []K

func (*ThreadSafeMap[K, V]) Len

func (m *ThreadSafeMap[K, V]) Len() int

func (*ThreadSafeMap[K, V]) Set

func (m *ThreadSafeMap[K, V]) Set(key K, value V)

func (*ThreadSafeMap[K, V]) Values

func (m *ThreadSafeMap[K, V]) Values() []V

Jump to

Keyboard shortcuts

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