reverse scan log
This commit is contained in:
parent
1f6bb40463
commit
f964542c49
1 changed files with 26 additions and 3 deletions
|
|
@ -3,6 +3,7 @@ package log
|
|||
import (
|
||||
"fmt"
|
||||
"git.giftfish.de/ston1th/docstore/pkg/core"
|
||||
"strings"
|
||||
"sync"
|
||||
)
|
||||
|
||||
|
|
@ -39,9 +40,31 @@ func (l *ScanLog) Printf(f string, v ...interface{}) {
|
|||
|
||||
func (l *ScanLog) Logs() (logs string) {
|
||||
l.RLock()
|
||||
for i := len(l.logs) - 1; i >= 0; i-- {
|
||||
logs += "\n" + l.logs[i]
|
||||
}
|
||||
logs = reverseJoin(l.logs, "\n")
|
||||
l.RUnlock()
|
||||
return
|
||||
}
|
||||
|
||||
// reverseJoin is a reverse version of strings.Join
|
||||
// code taken from strings.Join
|
||||
func reverseJoin(a []string, sep string) string {
|
||||
switch len(a) {
|
||||
case 0:
|
||||
return ""
|
||||
case 1:
|
||||
return a[0]
|
||||
}
|
||||
n := len(sep) * (len(a) - 1)
|
||||
for i := 0; i < len(a); i++ {
|
||||
n += len(a[i])
|
||||
}
|
||||
|
||||
var b strings.Builder
|
||||
b.Grow(n)
|
||||
b.WriteString(a[len(a)-1])
|
||||
for i := len(a) - 2; i >= 0; i-- {
|
||||
b.WriteString(sep)
|
||||
b.WriteString(a[i])
|
||||
}
|
||||
return b.String()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue