summaryrefslogtreecommitdiffstats
path: root/pkg/utils/utils.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/utils/utils.go')
-rw-r--r--pkg/utils/utils.go262
1 files changed, 0 insertions, 262 deletions
diff --git a/pkg/utils/utils.go b/pkg/utils/utils.go
index 69fe711ac..4ec1c624c 100644
--- a/pkg/utils/utils.go
+++ b/pkg/utils/utils.go
@@ -1,7 +1,6 @@
package utils
import (
- "bytes"
"encoding/json"
"fmt"
"log"
@@ -11,50 +10,11 @@ import (
"runtime"
"strconv"
"strings"
- "text/template"
"time"
- "github.com/fatih/color"
"github.com/jesseduffield/gocui"
)
-// 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 SplitLines(multilineString string) []string {
- multilineString = strings.Replace(multilineString, "\r", "", -1)
- if multilineString == "" || multilineString == "\n" {
- return make([]string, 0)
- }
- lines := strings.Split(multilineString, "\n")
- if lines[len(lines)-1] == "" {
- return lines[:len(lines)-1]
- }
- return lines
-}
-
-// WithPadding pads a string as much as you want
-func WithPadding(str string, padding int) string {
- uncoloredStr := Decolorise(str)
- if padding < len(uncoloredStr) {
- return str
- }
- return str + strings.Repeat(" ", padding-len(uncoloredStr))
-}
-
-// ColoredString takes a string and a colour attribute and returns a colored
-// string with that attribute
-func ColoredString(str string, colorAttributes ...color.Attribute) string {
- colour := color.New(colorAttributes...)
- return ColoredStringDirect(str, colour)
-}
-
-// ColoredStringDirect used for aggregating a few color attributes rather than
-// just sending a single one
-func ColoredStringDirect(str string, colour *color.Color) string {
- return colour.SprintFunc()(fmt.Sprint(str))
-}
-
// GetCurrentRepoName gets the repo's base name
func GetCurrentRepoName() string {
pwd, err := os.Getwd()
@@ -64,22 +24,6 @@ func GetCurrentRepoName() string {
return filepath.Base(pwd)
}
-// TrimTrailingNewline - Trims the trailing newline
-// TODO: replace with `chomp` after refactor
-func TrimTrailingNewline(str string) string {
- if strings.HasSuffix(str, "\n") {
- return str[:len(str)-1]
- }
- return str
-}
-
-// NormalizeLinefeeds - Removes all Windows and Mac style line feeds
-func NormalizeLinefeeds(str string) string {
- str = strings.Replace(str, "\r\n", "\n", -1)
- str = strings.Replace(str, "\r", "", -1)
- return str
-}
-
// 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
@@ -100,15 +44,6 @@ func Loader() string {
return characters[index : index+1]
}
-// ResolvePlaceholderString populates a template with values
-func ResolvePlaceholderString(str string, arguments map[string]string) string {
- for key, value := range arguments {
- str = strings.Replace(str, "{{"+key+"}}", value, -1)
- str = strings.Replace(str, "{{."+key+"}}", value, -1)
- }
- return str
-}
-
// Min returns the minimum of two integers
func Min(x, y int) int {
if x < y {
@@ -117,156 +52,11 @@ func Min(x, y int) int {
return y
}
-func RenderDisplayStrings(displayStringsArr [][]string) string {
- padWidths := getPadWidths(displayStringsArr)
- paddedDisplayStrings := getPaddedDisplayStrings(displayStringsArr, padWidths)
-
- return strings.Join(paddedDisplayStrings, "\n")
-}
-
-// Decolorise strips a string of color
-func Decolorise(str string) string {
- re := regexp.MustCompile(`\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]`)
- return re.ReplaceAllString(str, "")
-}
-
-func getPadWidths(stringArrays [][]string) []int {
- maxWidth := 0
- for _, stringArray := range stringArrays {
- if len(stringArray) > maxWidth {
- maxWidth = len(stringArray)
- }
- }
- if maxWidth-1 < 0 {
- return []int{}
- }
- padWidths := make([]int, maxWidth-1)
- for i := range padWidths {
- for _, strings := range stringArrays {
- uncoloredString := Decolorise(strings[i])
- if len(uncoloredString) > padWidths[i] {
- padWidths[i] = len(uncoloredString)
- }
- }
- }
- return padWidths
-}
-
-func getPaddedDisplayStrings(stringArrays [][]string, padWidths []int) []string {
- paddedDisplayStrings := make([]string, len(stringArrays))
- for i, stringArray := range stringArrays {
- if len(stringArray) == 0 {
- continue
- }
- for j, padWidth := range padWidths {
- if len(stringArray)-1 < j {
- continue
- }
- paddedDisplayStrings[i] += WithPadding(stringArray[j], padWidth) + " "
- }
- if len(stringArray)-1 < len(padWidths) {
- continue
- }
- paddedDisplayStrings[i] += stringArray[len(padWidths)]
- }
- return paddedDisplayStrings
-}
-
-// displayArraysAligned returns true if every string array returned from our
-// list of displayables has the same length
-func displayArraysAligned(stringArrays [][]string) bool {
- for _, strings := range stringArrays {
- if len(strings) != len(stringArrays[0]) {
- return false
- }
- }
- return true
-}
-
-// IncludesString if the list contains the string
-func IncludesString(list []string, a string) bool {
- for _, b := range list {
- if b == a {
- return true
- }
- }
- return false
-}
-
-// IncludesInt if the list contains the Int
-func IncludesInt(list []int, a int) bool {
- for _, b := range list {
- if b == a {
- return true
- }
- }
- return false
-}
-
-// NextIndex returns the index of the element that comes after the given number
-func NextIndex(numbers []int, currentNumber int) int {
- for index, number := range numbers {
- if number > currentNumber {
- return index
- }
- }
- return len(numbers) - 1
-}
-
-// PrevIndex returns the index that comes before the given number, cycling if we reach the end
-func PrevIndex(numbers []int, currentNumber int) int {
- end := len(numbers) - 1
- for i := end; i >= 0; i-- {
- if numbers[i] < currentNumber {
- return i
- }
- }
- return 0
-}
-
func AsJson(i interface{}) string {
bytes, _ := json.MarshalIndent(i, "", " ")
return string(bytes)
}
-// UnionInt returns the union of two int arrays
-func UnionInt(a, b []int) []int {
- m := make(map[int]bool)
-
- for _, item := range a {
- m[item] = true
- }
-
- for _, item := range b {
- if _, ok := m[item]; !ok {
- // this does not mutate the original a slice
- // though it does mutate the backing array I believe
- // but that doesn't matter because if you later want to append to the
- // original a it must see that the backing array has been changed
- // and create a new one
- a = append(a, item)
- }
- }
- return a
-}
-
-// DifferenceInt returns the difference of two int arrays
-func DifferenceInt(a, b []int) []int {
- result := []int{}
- m := make(map[int]bool)
-
- for _, item := range b {
- m[item] = true
- }
-
- for _, item := range a {
- if _, ok := m[item]; !ok {
- result = append(result, item)
- }
- }
- return result
-}
-
// used to keep a number n between 0 and max, allowing for wraparounds
func ModuloWithWrap(n, max int) int {
if n >= max {
@@ -278,32 +68,6 @@ func ModuloWithWrap(n, max int) int {
}
}
-// NextIntInCycle returns the next int in a slice, returning to the first index if we've reached the end
-func NextIntInCycle(sl []int, current int) int {
- for i, val := range sl {
- if val == current {
- if i == len(sl)-1 {
- return sl[0]
- }
- return sl[i+1]
- }
- }
- return sl[0]
-}
-
-// PrevIntInCycle returns the prev int in a slice, returning to the first index if we've reached the end
-func PrevIntInCycle(sl []int, current int) int {
- for i, val := range sl {
- if val == current {
- if i > 0 {
- return sl[i-1]
- }
- return sl[len(sl)-1]
- }
- }
- return sl[len(sl)-1]
-}
-
// TruncateWithEllipsis returns a string, truncated to a certain length, with an ellipsis
func TruncateWithEllipsis(str string, limit int) string {
if limit == 1 && len(str) > 1 {
@@ -329,18 +93,6 @@ func FindStringSubmatch(str string, regexpStr string) (bool, []string) {
return len(match) > 0, match
}
-func StringArraysOverlap(strArrA []string, strArrB []string) bool {
- for _, first := range strArrA {
- for _, second := range strArrB {
- if first == second {
- return true
- }
- }
- }
-
- return false
-}
-
func MustConvertToInt(s string) int {
i, err := strconv.Atoi(s)
if err != nil {
@@ -349,20 +101,6 @@ func MustConvertToInt(s string) int {
return i
}
-func ResolveTemplate(templateStr string, object interface{}) (string, error) {
- tmpl, err := template.New("template").Parse(templateStr)
- if err != nil {
- return "", err
- }
-
- var buf bytes.Buffer
- if err := tmpl.Execute(&buf, object); err != nil {
- return "", err
- }
-
- return buf.String(), nil
-}
-
// Safe will close tcell if a panic occurs so that we don't end up in a malformed
// terminal state
func Safe(f func()) {