File: utilities.go

package info (click to toggle)
golang-forgejo-forgejo-reply 1.0.2-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 604 kB
  • sloc: makefile: 2
file content (43 lines) | stat: -rw-r--r-- 972 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package reply

import "strings"

// equivalent of "".slice!
func stringSliceBang(s string, i int) string {
	return strings.Join(sliceSliceBang(strings.Split(s, ""), i), "")
}

// equivalent of [].slice!
func sliceSliceBang(slice []string, i int) []string {
	return append(slice[:i], slice[i+1:]...)
}

// equivalent of "abc"[0] = "x"
func stringReplaceChar(in string, r rune, i int) string {
	out := []rune(in)
	out[i] = r
	return string(out)
}

// equivalent of Ruby ""[start..end]
// .. is inclusive
// ... is exclusive
func sliceString(text string, start int, end int) string {
	var builder strings.Builder

	for i := start; i <= end; i++ {
		builder.WriteString(string(text[i]))
	}
	return builder.String()
}

// equivalent of Ruby [][start..end]
// .. is inclusive
// ... is exclusive
func sliceArray(lines []string, start int, end int) []string {
	newLines := []string{}
	for i := start; i <= end; i++ {
		newLines = append(newLines, lines[i])
	}
	return newLines
}