OnlineLibrary

Форк
0
75 строк · 1.6 Кб
1
package util
2

3
import (
4
	"encoding/xml"
5
	"fmt"
6
	"os"
7
	"strings"
8
	"time"
9
)
10

11
// Replaces all forbidden characters in s string with sign "_"
12
func ReplaceForbiddenCharacters(s string) string {
13
	chars := []string{"/", "\\", "?", "%", "*", ":", "|", "\"", "<", ">"}
14
	for _, ch := range chars {
15
		s = strings.ReplaceAll(s, ch, "_")
16
	}
17
	return s
18
}
19

20
// Formatting duration as HH:MM:SS
21
func FmtDuration(d time.Duration) string {
22
	h := d / time.Hour
23
	m := (d % time.Hour) / time.Minute
24
	s := (d % time.Minute) / time.Second
25
	return fmt.Sprintf("%02d:%02d:%02d", int(h), int(m), int(s))
26
}
27

28
// Parsing of duration from string HH:MM:SS
29
func ParseDuration(s string) (time.Duration, error) {
30
	var hh, mm, ss time.Duration
31
	_, err := fmt.Sscanf(s, "%d:%d:%d", &hh, &mm, &ss)
32
	if err != nil {
33
		return 0, err
34
	}
35
	return time.Hour*hh + time.Minute*mm + time.Second*ss, nil
36
}
37

38
// StringInSlice checks if a string exists in the specified slice of strings
39
func StringInSlice(str string, slc []string) bool {
40
	for _, s := range slc {
41
		if str == s {
42
			return true
43
		}
44
	}
45
	return false
46
}
47

48
// FileIsExist checks that path points to an existing file with the specified size
49
func FileIsExist(path string, size int64) bool {
50
	if info, err := os.Stat(path); err == nil {
51
		if !info.IsDir() && info.Size() == size {
52
			return true
53
		}
54
	}
55
	return false
56
}
57

58
func SaveXMLFile(path string, v any) error {
59
	f, err := CreateSecureFile(path)
60
	if err != nil {
61
		return err
62
	}
63
	enc := xml.NewEncoder(f)
64
	enc.Indent("", "\t") // for readability
65
	err = enc.Encode(v)
66
	if err == nil {
67
		err = enc.Close()
68
	}
69
	if err != nil {
70
		f.Corrupted()
71
		f.Close()
72
		return err
73
	}
74
	return f.Close()
75
}
76

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.