first commit
This commit is contained in:
34
server/internal/utils/color.go
Normal file
34
server/internal/utils/color.go
Normal file
@ -0,0 +1,34 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"regexp"
|
||||
)
|
||||
|
||||
const (
|
||||
char = "&"
|
||||
)
|
||||
|
||||
// Colors: http://www.lihaoyi.com/post/BuildyourownCommandLinewithANSIescapecodes.html
|
||||
var re = regexp.MustCompile(char + `(?m)([0-9]{1,2};[0-9]{1,2}|[0-9]{1,2})`)
|
||||
|
||||
func Color(str string) string {
|
||||
result := ""
|
||||
lastIndex := 0
|
||||
|
||||
for _, v := range re.FindAllSubmatchIndex([]byte(str), -1) {
|
||||
groups := []string{}
|
||||
for i := 0; i < len(v); i += 2 {
|
||||
groups = append(groups, str[v[i]:v[i+1]])
|
||||
}
|
||||
|
||||
result += str[lastIndex:v[0]] + "\033[" + groups[1] + "m"
|
||||
lastIndex = v[1]
|
||||
}
|
||||
|
||||
return result + str[lastIndex:]
|
||||
}
|
||||
|
||||
func Colorf(format string, a ...interface{}) string {
|
||||
return fmt.Sprintf(Color(format), a...)
|
||||
}
|
10
server/internal/utils/header.go
Normal file
10
server/internal/utils/header.go
Normal file
@ -0,0 +1,10 @@
|
||||
package utils
|
||||
|
||||
const Header = `&34
|
||||
_ __ __
|
||||
/ | / /__ / /______ \ /\
|
||||
/ |/ / _ \/ //_/ __ \ ) ( ')
|
||||
/ /| / __/ ,< / /_/ / ( / )
|
||||
/_/ |_/\___/_/|_|\____/ \(__)|
|
||||
&1&37 nurdism/neko &33%s v%s&0
|
||||
`
|
25
server/internal/utils/map.go
Normal file
25
server/internal/utils/map.go
Normal file
@ -0,0 +1,25 @@
|
||||
package utils
|
||||
|
||||
import (
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
)
|
||||
|
||||
type CountedSyncMap struct {
|
||||
sync.Map
|
||||
len uint64
|
||||
}
|
||||
|
||||
func (m *CountedSyncMap) CountedDelete(key interface{}) {
|
||||
m.Delete(key)
|
||||
atomic.AddUint64(&m.len, ^uint64(0))
|
||||
}
|
||||
|
||||
func (m *CountedSyncMap) CountedStore(key, value interface{}) {
|
||||
m.Store(key, value)
|
||||
atomic.AddUint64(&m.len, uint64(1))
|
||||
}
|
||||
|
||||
func (m *CountedSyncMap) CountedLen() uint64 {
|
||||
return atomic.LoadUint64(&m.len)
|
||||
}
|
Reference in New Issue
Block a user