utils

package
v0.41.0 Latest Latest
Warning

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

Go to latest
Published: Mar 22, 2024 License: MIT Imports: 27 Imported by: 4

Documentation

Index

Constants

View Source
const (
	SECONDS_IN_SECOND = 1
	SECONDS_IN_MINUTE = 60
	SECONDS_IN_HOUR   = 3600
	SECONDS_IN_DAY    = 86400
	SECONDS_IN_WEEK   = 604800
	SECONDS_IN_YEAR   = 31536000
	SECONDS_IN_MONTH  = SECONDS_IN_YEAR / 12
)
View Source
const COMMIT_HASH_SHORT_SIZE = 8
View Source
const LoaderAnimationInterval = 50

The duration between two frames of the loader animation in milliseconds

Variables

This section is empty.

Functions

func AsJson added in v0.7.1

func AsJson(i interface{}) string

func CaseAwareContains added in v0.39.0

func CaseAwareContains(haystack, needle string) bool

func CaseInsensitiveContains added in v0.39.0

func CaseInsensitiveContains(haystack, needle string) bool

func Clamp added in v0.35.0

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

func ContainsUppercase added in v0.39.0

func ContainsUppercase(s string) bool

func Decolorise added in v0.7.1

func Decolorise(str string) string

Decolorise strips a string of color

func DeleteTodos added in v0.41.0

func DeleteTodos(fileName string, todosToDelete []Todo, commentChar byte) error

func EditRebaseTodo added in v0.38.0

func EditRebaseTodo(filePath string, changes []TodoChange, commentChar byte) error

Read a git-rebase-todo file, change the actions for the given commits, and write it back

func EscapeSpecialChars added in v0.30.1

func EscapeSpecialChars(str string) string

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

func FilePath added in v0.36.0

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 FilterStrings added in v0.41.0

func FilterStrings(needle string, haystack []string, useFuzzySearch bool) []string

func Find added in v0.41.0

func Find(pattern string, data []string, useFuzzySearch bool) fuzzy.Matches

func FindFrom added in v0.41.0

func FindFrom(pattern string, data fuzzy.Source, useFuzzySearch bool) fuzzy.Matches

func FindNamedMatches added in v0.32.1

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

func FindStringSubmatch added in v0.20.1

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

func FindSubstrings added in v0.41.0

func FindSubstrings(pattern string, data []string) fuzzy.Matches

Drop-in replacement for fuzzy.Find (except that it doesn't fill out MatchedIndexes or Score, but we are not using these)

func FindSubstringsFrom added in v0.41.0

func FindSubstringsFrom(pattern string, data fuzzy.Source) fuzzy.Matches

Drop-in replacement for fuzzy.FindFrom (except that it doesn't fill out MatchedIndexes or Score, but we are not using these)

func ForEachLineInFile added in v0.28.2

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

func FormatPaths added in v0.41.0

func FormatPaths(paths []string) string

Returns comma-separated list of paths, with ellipsis if there are more than 3 e.g. "foo, bar, baz, [...3 more]"

func GetProjectRoot added in v0.1.71

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 added in v0.30.1

func IsValidHexValue(v string) bool

func Limit added in v0.30.1

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

func LimitStr added in v0.31.1

func LimitStr(value string, limit int) string

func Loader added in v0.2.0

func Loader(now time.Time) string

Loader dumps a string to be displayed as a loader

func Max added in v0.31.1

func Max(x, y int) int

func MaxFn added in v0.40.0

func MaxFn[T any](items []T, fn func(T) int) int

func Min added in v0.3.0

func Min(x, y int) int

Min returns the minimum of two integers

func ModuloWithWrap added in v0.11.1

func ModuloWithWrap(n, max int) int

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

func Move added in v0.40.0

func Move[T any](slice []T, fromIndex int, toIndex int) []T

Removes the element at the 'fromIndex' and then inserts it at 'toIndex'. Operates on the input slice. Expected use is to reassign the result to the input slice.

func MoveElement added in v0.38.0

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 MoveFixupCommitDown added in v0.38.0

func MoveFixupCommitDown(fileName string, originalSha string, fixupSha string, commentChar byte) error

func MoveTodosDown added in v0.41.0

func MoveTodosDown(fileName string, todosToMove []Todo, commentChar byte) error

func MoveTodosUp added in v0.41.0

func MoveTodosUp(fileName string, todosToMove []Todo, commentChar byte) error

func MuiltiGroupBy added in v0.35.0

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 added in v0.22.0

func MustConvertToInt(s string) int

func NewDummyCommon added in v0.32.1

func NewDummyCommon() *common.Common

func NewDummyCommonWithUserConfigAndAppState added in v0.41.0

func NewDummyCommonWithUserConfigAndAppState(userConfig *config.UserConfig, appState *config.AppState) *common.Common

func NewDummyLog added in v0.23.1

func NewDummyLog() *logrus.Entry

NewDummyLog creates a new dummy Log for testing

func NextIndex added in v0.7.1

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

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

func NextIntInCycle added in v0.15.1

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 added in v0.1.79

func NormalizeLinefeeds(str string) string

NormalizeLinefeeds - Removes all Windows and Mac style line feeds

func Partition added in v0.40.0

func Partition[T any](slice []T, test func(T) bool) ([]T, []T)

returns two slices: the first is for elements that pass the test, the second for those that don't.

func Pop added in v0.40.0

func Pop[T any](slice []T) (T, []T)

Pops item from the end of the slice and returns it, along with the updated slice Mutates original slice. Intended usage is to reassign the slice result to the input slice.

func Prepend added in v0.40.0

func Prepend[T any](slice []T, values ...T) []T

Prepends items to the beginning of a slice. E.g. Prepend([]int{1,2}, 3, 4) = []int{3,4,1,2} Mutates original slice. Intended usage is to reassign the slice result to the input slice.

func PrependStrToTodoFile added in v0.38.0

func PrependStrToTodoFile(filePath string, linesToPrepend []byte) error

func PrevIndex added in v0.7.1

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 added in v0.15.1

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 added in v0.38.0

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

func Remove added in v0.40.0

func Remove[T any](slice []T, index int) []T

Removes the element at the given index. Intended usage is to reassign the result to the input slice.

func RenderDisplayStrings added in v0.14.4

func RenderDisplayStrings(displayStringsArr [][]string, columnAlignments []Alignment) ([]string, []int)

defaults to left-aligning each column. If you want to set the alignment of each column, pass in a slice of Alignment values. returns a list of strings that should be joined with "\n", and an array of the column positions

func ResolvePlaceholderString added in v0.2.2

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

ResolvePlaceholderString populates a template with values

func ResolveTemplate added in v0.23.1

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

func Safe added in v0.23.1

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 added in v0.30.1

func SafeTruncate(str string, limit int) string

func SafeWithError added in v0.27.1

func SafeWithError(f func() error) error

func SetCustomColors added in v0.35.0

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

func Shift added in v0.40.0

func Shift[T any](slice []T) (T, []T)

Shifts item from the beginning of the slice and returns it, along with the updated slice. Mutates original slice. Intended usage is to reassign the slice result to the input slice.

func ShortSha added in v0.35.0

func ShortSha(sha string) string

func SortRange added in v0.41.0

func SortRange(x int, y int) (int, int)

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 added in v0.36.0

func SplitNul(str string) []string

func StackTrace added in v0.27.1

func StackTrace() string

func StringArraysOverlap added in v0.22.0

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

func TruncateWithEllipsis added in v0.15.3

func TruncateWithEllipsis(str string, limit int) string

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

func UnixToDateSmart added in v0.39.0

func UnixToDateSmart(now time.Time, timestamp int64, longTimeFormat string, shortTimeFormat string) string

formats the date in a smart way, if the date is today, it will show the time, otherwise it will show the date

func UnixToTimeAgo added in v0.20.1

func UnixToTimeAgo(timestamp int64) string

func ValuesAtIndices added in v0.39.0

func ValuesAtIndices[T any](slice []T, indices []int) []T

func WithPadding

func WithPadding(str string, padding int, alignment Alignment) string

WithPadding pads a string as much as you want

func WrapError added in v0.23.1

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 added in v0.38.0

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

Types

type Alignment added in v0.39.0

type Alignment int
const (
	AlignLeft Alignment = iota
	AlignRight
)

type ColumnConfig added in v0.39.0

type ColumnConfig struct {
	Width     int
	Alignment Alignment
}

type HistoryBuffer added in v0.41.0

type HistoryBuffer[T any] struct {
	// contains filtered or unexported fields
}

func NewHistoryBuffer added in v0.41.0

func NewHistoryBuffer[T any](maxSize int) *HistoryBuffer[T]

func (*HistoryBuffer[T]) PeekAt added in v0.41.0

func (self *HistoryBuffer[T]) PeekAt(index int) (T, error)

func (*HistoryBuffer[T]) Push added in v0.41.0

func (self *HistoryBuffer[T]) Push(item T)

type OnceWriter added in v0.36.0

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

func NewOnceWriter added in v0.36.0

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

func (*OnceWriter) Write added in v0.36.0

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

type StringStack added in v0.35.0

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

func (*StringStack) Clear added in v0.35.0

func (self *StringStack) Clear()

func (*StringStack) IsEmpty added in v0.35.0

func (self *StringStack) IsEmpty() bool

func (*StringStack) Pop added in v0.35.0

func (self *StringStack) Pop() string

func (*StringStack) Push added in v0.35.0

func (self *StringStack) Push(s string)

type ThreadSafeMap added in v0.36.0

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

func NewThreadSafeMap added in v0.36.0

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

func (*ThreadSafeMap[K, V]) Clear added in v0.36.0

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

func (*ThreadSafeMap[K, V]) Delete added in v0.36.0

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

func (*ThreadSafeMap[K, V]) Get added in v0.36.0

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

func (*ThreadSafeMap[K, V]) Has added in v0.36.0

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

func (*ThreadSafeMap[K, V]) IsEmpty added in v0.36.0

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

func (*ThreadSafeMap[K, V]) Keys added in v0.36.0

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

func (*ThreadSafeMap[K, V]) Len added in v0.36.0

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

func (*ThreadSafeMap[K, V]) Set added in v0.36.0

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

func (*ThreadSafeMap[K, V]) Values added in v0.36.0

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

type Todo added in v0.41.0

type Todo struct {
	Sha    string // for todos that have one, e.g. pick, drop, fixup, etc.
	Ref    string // for update-ref todos
	Action todo.TodoCommand
}

type TodoChange added in v0.41.0

type TodoChange struct {
	Sha       string
	OldAction todo.TodoCommand
	NewAction todo.TodoCommand
}

In order to change a TODO in git-rebase-todo, we need to specify the old action, because sometimes the same sha appears multiple times in the file (e.g. in a pick and later in a merge)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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