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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.giftfish.de/ston1th/docstore/pkg/core"
|
"git.giftfish.de/ston1th/docstore/pkg/core"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -39,9 +40,31 @@ func (l *ScanLog) Printf(f string, v ...interface{}) {
|
||||||
|
|
||||||
func (l *ScanLog) Logs() (logs string) {
|
func (l *ScanLog) Logs() (logs string) {
|
||||||
l.RLock()
|
l.RLock()
|
||||||
for i := len(l.logs) - 1; i >= 0; i-- {
|
logs = reverseJoin(l.logs, "\n")
|
||||||
logs += "\n" + l.logs[i]
|
|
||||||
}
|
|
||||||
l.RUnlock()
|
l.RUnlock()
|
||||||
return
|
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