master > master: codego fügte funktionen utils hinzu

This commit is contained in:
RD 2021-05-12 18:44:53 +02:00
parent 44b0ee41bf
commit 100701d610
1 changed files with 75 additions and 7 deletions

View File

@ -1,23 +1,39 @@
package utils
import (
"encoding/json"
"log"
"sort"
"strings"
)
/* ---------------------------------------------------------------- *
* EXPORTS
* METHODS: json
* ---------------------------------------------------------------- */
func StrListContains(list []string, x string) bool {
for _, obj := range list {
if obj == x {
return true
}
func JsonToArrayOfStrings(s string, value *[]string) {
var err error
err = json.Unmarshal([]byte(s), &value)
if err != nil {
panic(err)
}
return false
}
/* ---------------------------------------------------------------- *
* METHODS: conversion
* ---------------------------------------------------------------- */
func BoolToInt(cond bool) int {
if cond {
return 1
}
return 0
}
/* ---------------------------------------------------------------- *
* METHODS: for integer lists
* ---------------------------------------------------------------- */
func Min2(x int, y int) int {
if x <= y {
return x
@ -32,6 +48,49 @@ func Max2(x int, y int) int {
return y
}
func MinList(x []int) int {
var val int
if len(x) == 0 {
log.Fatal("Cannot compute the maximum of an empty array.")
return 0
}
val = x[0]
for i, val_ := range x {
if i > 0 {
val = Min2(val, val_)
}
}
return val
}
func MaxList(x []int) int {
var val int
if len(x) == 0 {
log.Fatal("Cannot compute the maximum of an empty array.")
return 0
}
val = x[0]
for i, val_ := range x {
if i > 0 {
val = Max2(val, val_)
}
}
return val
}
/* ---------------------------------------------------------------- *
* METHODS: for string lists
* ---------------------------------------------------------------- */
func StrListContains(list []string, x string) bool {
for _, obj := range list {
if obj == x {
return true
}
}
return false
}
func SortStrings(list *[]string) {
sort.Slice(*list, func(i int, j int) bool {
u := strings.ToLower((*list)[i])
@ -68,6 +127,7 @@ func UnionStrings2(list1 []string, list2 []string) []string {
return list
}
// assumes that listTo contains no duplicates
func UnionStringsTo(listTo *[]string, listFrom []string) {
var mark = make(map[string]bool)
for _, item := range listFrom {
@ -82,3 +142,11 @@ func UnionStringsTo(listTo *[]string, listFrom []string) {
}
}
}
func UnionStringsList(lists [][]string) []string {
var list = []string{}
for _, list_ := range lists {
UnionStringsTo(&list, list_)
}
return list
}