some improvements
This commit is contained in:
parent
8143e484cd
commit
d9d089be0d
8 changed files with 132 additions and 24 deletions
2
pkg/cache/cache.go
vendored
2
pkg/cache/cache.go
vendored
|
|
@ -44,7 +44,7 @@ func (c *Cache) Get(title string) (p *core.Page) {
|
|||
*p = *cp.Page
|
||||
return
|
||||
}
|
||||
return nil
|
||||
return
|
||||
}
|
||||
|
||||
func (c *Cache) Delete(title string) {
|
||||
|
|
|
|||
|
|
@ -104,6 +104,7 @@ func (i *Index) Search(search string) (results []core.Result, err error) {
|
|||
}
|
||||
r := core.Result{StoreTitle: hit.ID}
|
||||
r.Section, r.Title = render.SplitStoreTitle(hit.ID)
|
||||
r.Title = render.Untitle(r.Title)
|
||||
d, err := i.i.Document(hit.ID)
|
||||
if d == nil || err != nil {
|
||||
continue
|
||||
|
|
|
|||
25
pkg/otp/otp_test.go
Normal file
25
pkg/otp/otp_test.go
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (C) 2019 Marius Schellenberger
|
||||
|
||||
package otp
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestNew(t *testing.T) {
|
||||
_, err := New("admin")
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestImageSecretFromURL(t *testing.T) {
|
||||
r, _ := New("admin")
|
||||
_, secret, err := ImageSecretFromURL(r.URL)
|
||||
if err != nil {
|
||||
t.Error(err)
|
||||
}
|
||||
if secret != r.Secret {
|
||||
t.Error("secret is not equal")
|
||||
}
|
||||
}
|
||||
|
|
@ -13,6 +13,8 @@ import (
|
|||
"strings"
|
||||
)
|
||||
|
||||
const delim = "+"
|
||||
|
||||
var filter = makeFilter()
|
||||
|
||||
func makeFilter() analysis.CharFilter {
|
||||
|
|
@ -40,7 +42,11 @@ func Render(p *core.Page) string {
|
|||
}
|
||||
|
||||
func Title(title string) string {
|
||||
return whiteSpace.ReplaceAllString(titleRe.ReplaceAllString(title, ""), "+")
|
||||
return whiteSpace.ReplaceAllString(titleRe.ReplaceAllString(title, ""), delim)
|
||||
}
|
||||
|
||||
func Untitle(title string) string {
|
||||
return strings.ReplaceAll(title, delim, " ")
|
||||
}
|
||||
|
||||
func StoreTitle(section, title string) string {
|
||||
|
|
|
|||
25
pkg/store/gob.go
Normal file
25
pkg/store/gob.go
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
// Copyright (C) 2019 Marius Schellenberger
|
||||
|
||||
package store
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/gob"
|
||||
)
|
||||
|
||||
type gobMarshaler struct{}
|
||||
|
||||
func NewGOB() Marshaler {
|
||||
return gobMarshaler{}
|
||||
}
|
||||
|
||||
func (gobMarshaler) Marshal(v interface{}) (b []byte, err error) {
|
||||
buf := new(bytes.Buffer)
|
||||
err = gob.NewEncoder(buf).Encode(v)
|
||||
b = buf.Bytes()
|
||||
return
|
||||
}
|
||||
|
||||
func (gobMarshaler) Unmarshal(data []byte, v interface{}) error {
|
||||
return gob.NewDecoder(bytes.NewBuffer(data)).Decode(v)
|
||||
}
|
||||
39
pkg/store/gob_test.go
Normal file
39
pkg/store/gob_test.go
Normal file
|
|
@ -0,0 +1,39 @@
|
|||
// Copyright (C) 2019 Marius Schellenberger
|
||||
|
||||
package store
|
||||
|
||||
import "testing"
|
||||
|
||||
var g = NewGOB()
|
||||
|
||||
func BenchmarkGOBMarshalPage(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
for i := 0; i < b.N; i++ {
|
||||
g.Marshal(p)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkGOBUnmarshalPage(b *testing.B) {
|
||||
bytes, _ := g.Marshal(p)
|
||||
var pp Page
|
||||
b.ReportAllocs()
|
||||
for i := 0; i < b.N; i++ {
|
||||
g.Unmarshal(bytes, &pp)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkGOBMarshalUser(b *testing.B) {
|
||||
b.ReportAllocs()
|
||||
for i := 0; i < b.N; i++ {
|
||||
g.Marshal(u)
|
||||
}
|
||||
}
|
||||
|
||||
func BenchmarkGOBUnmarshalUser(b *testing.B) {
|
||||
bytes, _ := g.Marshal(u)
|
||||
var uu User
|
||||
b.ReportAllocs()
|
||||
for i := 0; i < b.N; i++ {
|
||||
g.Unmarshal(bytes, &uu)
|
||||
}
|
||||
}
|
||||
|
|
@ -2,29 +2,7 @@
|
|||
|
||||
package store
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/gob"
|
||||
)
|
||||
|
||||
type Marshaler interface {
|
||||
Marshal(v interface{}) ([]byte, error)
|
||||
Unmarshal(data []byte, v interface{}) error
|
||||
}
|
||||
|
||||
type gobMarshaler struct{}
|
||||
|
||||
func NewGOB() Marshaler {
|
||||
return gobMarshaler{}
|
||||
}
|
||||
|
||||
func (gobMarshaler) Marshal(v interface{}) (b []byte, err error) {
|
||||
buf := new(bytes.Buffer)
|
||||
err = gob.NewEncoder(buf).Encode(v)
|
||||
b = buf.Bytes()
|
||||
return
|
||||
}
|
||||
|
||||
func (gobMarshaler) Unmarshal(data []byte, v interface{}) error {
|
||||
return gob.NewDecoder(bytes.NewBuffer(data)).Decode(v)
|
||||
}
|
||||
|
|
|
|||
34
pkg/store/marshal_test.go
Normal file
34
pkg/store/marshal_test.go
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
// Copyright (C) 2019 Marius Schellenberger
|
||||
|
||||
package store
|
||||
|
||||
import "time"
|
||||
|
||||
type Page struct {
|
||||
Text string
|
||||
Date time.Time
|
||||
Number int
|
||||
Test bool
|
||||
}
|
||||
|
||||
type User struct {
|
||||
Username string
|
||||
Password string
|
||||
Number int
|
||||
Test bool
|
||||
Today time.Time
|
||||
}
|
||||
|
||||
var p = &Page{
|
||||
"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.",
|
||||
time.Now(),
|
||||
34534534,
|
||||
true,
|
||||
}
|
||||
var u = &User{
|
||||
"svdfnvdnfvon",
|
||||
"func BenchmarkNew(b *testing.B) {",
|
||||
8794355,
|
||||
false,
|
||||
time.Now(),
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue