commit 1f46aa0bf2edfd9f2f742081e8721a60b64951e5
parent 10739fb4a8c9c1e73c8f4c90eb62ae97c0dc8938
Author: lash <dev@holbrook.no>
Date: Tue, 21 Jan 2025 15:39:38 +0000
Gofmt
Diffstat:
105 files changed, 1129 insertions(+), 1114 deletions(-)
diff --git a/asm/asm.go b/asm/asm.go
@@ -16,7 +16,6 @@ import (
"git.defalsify.org/vise.git/vm"
)
-
// Asm assembles bytecode from the vise assembly mini-language.
//
// TODO: Conceal from outside use
@@ -28,11 +27,11 @@ type Asm struct {
//
// TODO: Conceal from outside use
type Arg struct {
- Sym *string `(@Sym Whitespace?)?`
- Size *uint32 `(@Size Whitespace?)?`
- Flag *uint8 `(@Size Whitespace?)?`
+ Sym *string `(@Sym Whitespace?)?`
+ Size *uint32 `(@Size Whitespace?)?`
+ Flag *uint8 `(@Size Whitespace?)?`
Selector *string `(@Sym Whitespace?)?`
- Desc *string `(@Sym Whitespace?)?`
+ Desc *string `(@Sym Whitespace?)?`
//Desc *string `(Quote ((@Sym | @Size) @Whitespace?)+ Quote Whitespace?)?`
}
@@ -63,7 +62,6 @@ func parseTwoSym(b *bytes.Buffer, arg Arg) (int, error) {
}
}
-
n, err := writeSym(b, sym)
rn += n
if err != nil {
@@ -82,7 +80,7 @@ func parseTwoSymReverse(b *bytes.Buffer, arg Arg) (int, error) {
var rn int
sym := *arg.Selector
- selector := *arg.Sym
+ selector := *arg.Sym
n, err := writeSym(b, selector)
rn += n
if err != nil {
@@ -163,12 +161,12 @@ func parseOne(op vm.Opcode, instruction *Instruction, w io.Writer) (int, error)
a := instruction.OpArg
var n_buf int
var n_out int
-
+
b := bytes.NewBuffer(nil)
n, err := writeOpcode(b, op)
n_buf += n
- if err != nil {
+ if err != nil {
return n_out, err
}
@@ -259,8 +257,8 @@ func (a Arg) String() string {
//
// TODO: Conceal from outside use
type Instruction struct {
- OpCode string `@Ident`
- OpArg Arg `(Whitespace @@)?`
+ OpCode string `@Ident`
+ OpArg Arg `(Whitespace @@)?`
Comment string `Comment? EOL`
}
@@ -287,7 +285,7 @@ var (
func numSize(n uint32) int {
v := math.Log2(float64(n))
- return int((v / 8) + 1)
+ return int((v / 8) + 1)
}
func writeOpcode(w *bytes.Buffer, op vm.Opcode) (int, error) {
@@ -317,14 +315,14 @@ func writeSize(w *bytes.Buffer, n uint32) (int, error) {
}
w.Write([]byte{byte(sz)})
binary.BigEndian.PutUint32(bn[:], n)
- c := 4-sz
+ c := 4 - sz
return w.Write(bn[c:])
}
// Batcher handles assembly commands that generates multiple instructions, such as menu navigation commands.
type Batcher struct {
menuProcessor MenuProcessor
- inMenu bool
+ inMenu bool
}
// NewBatcher creates a new Batcher objcet.
@@ -335,7 +333,7 @@ func NewBatcher(mp MenuProcessor) Batcher {
}
// MenuExit generates the instructions for the batch and writes them to the given io.Writer.
-func(bt *Batcher) MenuExit(w io.Writer) (int, error) {
+func (bt *Batcher) MenuExit(w io.Writer) (int, error) {
if !bt.inMenu {
return 0, nil
}
@@ -345,7 +343,7 @@ func(bt *Batcher) MenuExit(w io.Writer) (int, error) {
}
// MenuAdd adds a new menu instruction to the batcher.
-func(bt *Batcher) MenuAdd(w io.Writer, code string, arg Arg) (int, error) {
+func (bt *Batcher) MenuAdd(w io.Writer, code string, arg Arg) (int, error) {
bt.inMenu = true
var selector string
var sym string
@@ -370,7 +368,7 @@ func(bt *Batcher) MenuAdd(w io.Writer, code string, arg Arg) (int, error) {
}
// Exit is a synonym for MenuExit
-func(bt *Batcher) Exit(w io.Writer) (int, error) {
+func (bt *Batcher) Exit(w io.Writer) (int, error) {
return bt.MenuExit(w)
}
@@ -382,9 +380,7 @@ func Parse(s string, w io.Writer) (int, error) {
return 0, err
}
- batch := Batcher{
-
- }
+ batch := Batcher{}
var rn int
for _, v := range ast.Instructions {
diff --git a/asm/asm_test.go b/asm/asm_test.go
@@ -15,7 +15,7 @@ func TestParserRoute(t *testing.T) {
Parse(s, b)
expect := vm.NewLine(nil, vm.HALT, nil, nil, nil)
if !bytes.Equal(b.Bytes(), expect) {
- log.Fatalf("expected:\n\t%x\ngot:\n\t%x\n", expect, b)
+ log.Fatalf("expected:\n\t%x\ngot:\n\t%x\n", expect, b)
}
b = bytes.NewBuffer(nil)
@@ -31,7 +31,7 @@ func TestParserRoute(t *testing.T) {
Parse(s, b)
expect = vm.NewLine(nil, vm.MAP, []string{"tinkywinky"}, nil, nil)
if !bytes.Equal(b.Bytes(), expect) {
- log.Fatalf("expected:\n\t%x\ngot:\n\t%x\n", expect, b)
+ log.Fatalf("expected:\n\t%x\ngot:\n\t%x\n", expect, b)
}
b = bytes.NewBuffer(nil)
@@ -39,7 +39,7 @@ func TestParserRoute(t *testing.T) {
Parse(s, b)
expect = vm.NewLine(nil, vm.MOVE, []string{"dipsy"}, nil, nil)
if !bytes.Equal(b.Bytes(), expect) {
- log.Fatalf("expected:\n\t%x\ngot:\n\t%x\n", expect, b)
+ log.Fatalf("expected:\n\t%x\ngot:\n\t%x\n", expect, b)
}
b = bytes.NewBuffer(nil)
@@ -415,7 +415,7 @@ func TestParserWriteMultiple(t *testing.T) {
if n != n_expect {
t.Fatalf("expected total %v bytes output, got %v", n_expect, n)
}
-
+
rb := r.Bytes()
if !bytes.Equal(rb, r_expect) {
t.Fatalf("expected result:\n\t%v, got:\n\t%x", r_expect_hex, rb)
@@ -429,9 +429,9 @@ func TestParserWriteMultiple(t *testing.T) {
func TestParserCapQuote(t *testing.T) {
t.Skip("please fix mysterious ignore of initial cap in display sym match")
- b := vm.NewLine(nil, vm.MOUT, []string{"a", "foo"}, nil, nil)
- b = vm.NewLine(b, vm.MOUT, []string{"b", "Bar"}, nil, nil)
- b = vm.NewLine(b, vm.MOUT, []string{"c", "baz"}, nil, nil)
+ b := vm.NewLine(nil, vm.MOUT, []string{"a", "foo"}, nil, nil)
+ b = vm.NewLine(b, vm.MOUT, []string{"b", "Bar"}, nil, nil)
+ b = vm.NewLine(b, vm.MOUT, []string{"c", "baz"}, nil, nil)
b = vm.NewLine(b, vm.MSINK, nil, nil, nil)
ph := vm.NewParseHandler().WithDefaultHandlers()
s, err := ph.ToString(b)
diff --git a/asm/flag.go b/asm/flag.go
@@ -13,21 +13,21 @@ import (
// FlagParser is used to resolve flag strings to corresponding
// flag index integer values.
type FlagParser struct {
- flag map[string]string
+ flag map[string]string
flagDescription map[uint32]string
- hi uint32
- debug bool
+ hi uint32
+ debug bool
}
// NewFlagParser creates a new FlagParser
func NewFlagParser() *FlagParser {
return &FlagParser{
- flag: make(map[string]string),
+ flag: make(map[string]string),
flagDescription: make(map[uint32]string),
}
}
-func(pp *FlagParser) WithDebug() *FlagParser {
+func (pp *FlagParser) WithDebug() *FlagParser {
pp.debug = true
return pp
}
@@ -36,7 +36,7 @@ func(pp *FlagParser) WithDebug() *FlagParser {
// as a numeric string.
//
// If flag string has not been registered, an error is returned.
-func(pp *FlagParser) GetAsString(key string) (string, error) {
+func (pp *FlagParser) GetAsString(key string) (string, error) {
v, ok := pp.flag[key]
if !ok {
return "", fmt.Errorf("no flag registered under key: %s", key)
@@ -48,7 +48,7 @@ func(pp *FlagParser) GetAsString(key string) (string, error) {
// flag string
//
// If flag string has not been registered, an error is returned.
-func(pp *FlagParser) GetFlag(key string) (uint32, error) {
+func (pp *FlagParser) GetFlag(key string) (uint32, error) {
v, err := pp.GetAsString(key)
if err != nil {
return 0, err
@@ -61,7 +61,7 @@ func(pp *FlagParser) GetFlag(key string) (uint32, error) {
// if available.
//
// If no description has been provided, an error is returned.
-func(pp *FlagParser) GetDescription(idx uint32) (string, error) {
+func (pp *FlagParser) GetDescription(idx uint32) (string, error) {
v, ok := pp.flagDescription[idx]
if !ok {
return "", fmt.Errorf("no description for flag idx: %v", idx)
@@ -70,20 +70,20 @@ func(pp *FlagParser) GetDescription(idx uint32) (string, error) {
}
// Last returns the highest registered flag index value
-func(pp *FlagParser) Last() uint32 {
- return pp.hi
+func (pp *FlagParser) Last() uint32 {
+ return pp.hi
}
// Load parses a Comma Seperated Value file under the given filepath
// to provide mappings between flag strings and flag indices.
//
// The expected format is:
-//
+//
// Field 1: The literal string "flag"
// Field 2: Flag string
// Field 3: Flag index
// Field 4: Flag description (optional)
-func(pp *FlagParser) Load(fp string) (int, error) {
+func (pp *FlagParser) Load(fp string) (int, error) {
var i int
f, err := os.Open(fp)
if err != nil {
@@ -116,8 +116,8 @@ func(pp *FlagParser) Load(fp string) (int, error) {
if fl > pp.hi {
pp.hi = fl
}
-
- if (len(v) > 3) {
+
+ if len(v) > 3 {
pp.flagDescription[uint32(fl)] = v[3]
logg.Debugf("added flag translation", "from", v[1], "to", v[2], "description", v[3])
} else {
@@ -127,7 +127,7 @@ func(pp *FlagParser) Load(fp string) (int, error) {
state.FlagDebugger.Register(fl, v[2])
}
}
- }
+ }
return i, nil
}
diff --git a/asm/menu.go b/asm/menu.go
@@ -10,35 +10,35 @@ import (
type BatchCode uint16
const (
- _MENU_OFFSET = 256
- _MENU_DOWN = _MENU_OFFSET
- _MENU_UP = _MENU_OFFSET + 1
- _MENU_NEXT = _MENU_OFFSET + 2
+ _MENU_OFFSET = 256
+ _MENU_DOWN = _MENU_OFFSET
+ _MENU_UP = _MENU_OFFSET + 1
+ _MENU_NEXT = _MENU_OFFSET + 2
_MENU_PREVIOUS = _MENU_OFFSET + 3
)
var (
batchCode = map[string]BatchCode{
- "DOWN": _MENU_DOWN,
- "UP": _MENU_UP,
- "NEXT": _MENU_NEXT,
+ "DOWN": _MENU_DOWN,
+ "UP": _MENU_UP,
+ "NEXT": _MENU_NEXT,
"PREVIOUS": _MENU_PREVIOUS,
}
)
type menuItem struct {
- code BatchCode
- choice string
+ code BatchCode
+ choice string
display string
- target string
+ target string
}
// MenuProcessor handles code lines with BatchCode quasi-opcodes that control menu generation.
-//
+//
// It creates vm instructions for display of menu and handling of input on either size of a vm.HALT instruction.
type MenuProcessor struct {
items []menuItem
- size uint32
+ size uint32
}
// NewMenuProcessor creates a new MenuProcessor object.
@@ -49,7 +49,7 @@ func NewMenuProcessor() MenuProcessor {
// Add a menu batch instruction to be processed.
//
// Instructions will be rendered in the order in which they have been added.
-func(mp *MenuProcessor) Add(bop string, choice string, display string, target string) error {
+func (mp *MenuProcessor) Add(bop string, choice string, display string, target string) error {
bopCode := batchCode[bop]
if bopCode == 0 {
return fmt.Errorf("unknown menu instruction: %v", bop)
@@ -58,10 +58,10 @@ func(mp *MenuProcessor) Add(bop string, choice string, display string, target st
return fmt.Errorf("target is only valid for DOWN")
}
m := menuItem{
- code: bopCode,
- choice: choice,
+ code: bopCode,
+ choice: choice,
display: display,
- target: target,
+ target: target,
}
mp.items = append(mp.items, m)
return nil
diff --git a/asm/menu_test.go b/asm/menu_test.go
@@ -6,7 +6,6 @@ import (
"git.defalsify.org/vise.git/vm"
)
-
func TestMenuInterpreter(t *testing.T) {
m := NewMenuProcessor()
ph := vm.NewParseHandler().WithDefaultHandlers()
@@ -49,4 +48,3 @@ INCMP _ 99
t.Errorf("expected:\n\t%v\ngot:\n\t%v\n", expect, r)
}
}
-
diff --git a/cache/cache.go b/cache/cache.go
@@ -17,8 +17,8 @@ type Cache struct {
// Size limits for all loaded symbols.
Sizes map[string]uint16
// Last inserted value (regardless of scope)
- LastValue string
- invalid bool
+ LastValue string
+ invalid bool
}
// NewCache creates a new ready-to-use Cache object
@@ -31,23 +31,23 @@ func NewCache() *Cache {
}
// Invalidate implements the Memory interface.
-func(ca *Cache) Invalidate() {
+func (ca *Cache) Invalidate() {
ca.invalid = true
}
// Invalid implements the Memory interface.
-func(ca *Cache) Invalid() bool {
+func (ca *Cache) Invalid() bool {
return ca.invalid
}
// WithCacheSize is a chainable method that applies a cumulative cache size limitation for all cached items.
-func(ca *Cache) WithCacheSize(cacheSize uint32) *Cache {
+func (ca *Cache) WithCacheSize(cacheSize uint32) *Cache {
ca.CacheSize = cacheSize
return ca
}
// Add implements the Memory interface.
-func(ca *Cache) Add(key string, value string, sizeLimit uint16) error {
+func (ca *Cache) Add(key string, value string, sizeLimit uint16) error {
if sizeLimit > 0 {
l := uint16(len(value))
if l > sizeLimit {
@@ -66,7 +66,7 @@ func(ca *Cache) Add(key string, value string, sizeLimit uint16) error {
if len(value) > 0 {
sz = ca.checkCapacity(value)
if sz == 0 {
- return fmt.Errorf("Cache capacity exceeded %v of %v", ca.CacheUseSize + sz, ca.CacheSize)
+ return fmt.Errorf("Cache capacity exceeded %v of %v", ca.CacheUseSize+sz, ca.CacheSize)
}
}
logg.Debugf("Cache add", "key", key, "size", sz, "limit", sizeLimit)
@@ -79,7 +79,7 @@ func(ca *Cache) Add(key string, value string, sizeLimit uint16) error {
}
// ReservedSize implements the Memory interface.
-func(ca *Cache) ReservedSize(key string) (uint16, error) {
+func (ca *Cache) ReservedSize(key string) (uint16, error) {
v, ok := ca.Sizes[key]
if !ok {
return 0, fmt.Errorf("unknown symbol: %s", key)
@@ -88,7 +88,7 @@ func(ca *Cache) ReservedSize(key string) (uint16, error) {
}
// Update implements the Memory interface.
-func(ca *Cache) Update(key string, value string) error {
+func (ca *Cache) Update(key string, value string) error {
sizeLimit := ca.Sizes[key]
if ca.Sizes[key] > 0 {
l := uint16(len(value))
@@ -109,7 +109,7 @@ func(ca *Cache) Update(key string, value string) error {
baseUseSize := ca.CacheUseSize
ca.Cache[checkFrame][key] = r
ca.CacheUseSize += l
- return fmt.Errorf("Cache capacity exceeded %v of %v", baseUseSize + sz, ca.CacheSize)
+ return fmt.Errorf("Cache capacity exceeded %v of %v", baseUseSize+sz, ca.CacheSize)
}
ca.Cache[checkFrame][key] = value
ca.CacheUseSize += uint32(len(value))
@@ -117,7 +117,7 @@ func(ca *Cache) Update(key string, value string) error {
}
// Get implements the Memory interface.
-func(ca *Cache) Get(key string) (string, error) {
+func (ca *Cache) Get(key string) (string, error) {
i := ca.frameOf(key)
if i == -1 {
return "", fmt.Errorf("key '%s' not found in any frame", key)
@@ -130,7 +130,7 @@ func(ca *Cache) Get(key string) (string, error) {
}
// Reset implements the Memory interface.
-func(ca *Cache) Reset() {
+func (ca *Cache) Reset() {
var v string
if len(ca.Cache) == 0 {
return
@@ -172,14 +172,14 @@ func (ca *Cache) Pop() error {
}
// Check returns true if a key already exists in the cache.
-func(ca *Cache) Check(key string) bool {
+func (ca *Cache) Check(key string) bool {
return ca.frameOf(key) == -1
}
// Last implements the Memory interface.
//
// TODO: needs to be invalidated when out of scope
-func(ca *Cache) Last() string {
+func (ca *Cache) Last() string {
s := ca.LastValue
ca.LastValue = ""
return s
@@ -187,19 +187,19 @@ func(ca *Cache) Last() string {
// bytes that will be added to cache use size for string
// returns 0 if capacity would be exceeded
-func(ca *Cache) checkCapacity(v string) uint32 {
+func (ca *Cache) checkCapacity(v string) uint32 {
sz := uint32(len(v))
if ca.CacheSize == 0 {
return sz
}
- if ca.CacheUseSize + sz > ca.CacheSize {
- return 0
+ if ca.CacheUseSize+sz > ca.CacheSize {
+ return 0
}
return sz
}
// return 0-indexed frame number where key is defined. -1 if not defined
-func(ca *Cache) frameOf(key string) int {
+func (ca *Cache) frameOf(key string) int {
for i, m := range ca.Cache {
for k, _ := range m {
if k == key {
@@ -211,12 +211,12 @@ func(ca *Cache) frameOf(key string) int {
}
// Levels implements the Memory interface.
-func(ca *Cache) Levels() uint32 {
+func (ca *Cache) Levels() uint32 {
return uint32(len(ca.Cache))
}
// Keys implements the Memory interface.
-func(ca *Cache) Keys(level uint32) []string {
+func (ca *Cache) Keys(level uint32) []string {
var r []string
for k := range ca.Cache[level] {
r = append(r, k)
diff --git a/cache/cache_test.go b/cache/cache_test.go
@@ -1,8 +1,8 @@
package cache
import (
- "testing"
"slices"
+ "testing"
)
func TestNewCache(t *testing.T) {
@@ -141,7 +141,7 @@ func TestStateDownUp(t *testing.T) {
}
l = len(ca.Cache)
if l != 1 {
- t.Fatalf("expected cache length 1, got %d", l)
+ t.Fatalf("expected cache length 1, got %d", l)
}
}
diff --git a/db/db.go b/db/db.go
@@ -37,7 +37,7 @@ const (
// Db abstracts all data storage and retrieval as a key-value store
type Db interface {
// Connect prepares the storage backend for use.
- //
+ //
// If called more than once, consecutive calls should be ignored.
Connect(ctx context.Context, connStr string) error
// MUST be called before termination after a Connect().
@@ -47,9 +47,9 @@ type Db interface {
// Errors if the key does not exist, or if the retrieval otherwise fails.
Get(ctx context.Context, key []byte) ([]byte, error)
// Put stores a value under a key.
- //
+ //
// Any existing value will be replaced.
- //
+ //
// Errors if the value could not be stored.
Put(ctx context.Context, key []byte, val []byte) error
// SetPrefix sets the storage context prefix to use for consecutive Get and Put operations.
@@ -84,7 +84,7 @@ type Db interface {
}
type LookupKey struct {
- Default []byte
+ Default []byte
Translation []byte
}
@@ -95,8 +95,8 @@ type LookupKey struct {
// If language is not nil, and the context does not support language, the language value will silently will be ignored.
func ToDbKey(typ uint8, b []byte, l *lang.Language) []byte {
k := []byte{typ}
- if l != nil && l.Code != "" && typ & (DATATYPE_MENU | DATATYPE_TEMPLATE | DATATYPE_STATICLOAD) > 0 {
- b = append(b, []byte("_" + l.Code)...)
+ if l != nil && l.Code != "" && typ&(DATATYPE_MENU|DATATYPE_TEMPLATE|DATATYPE_STATICLOAD) > 0 {
+ b = append(b, []byte("_"+l.Code)...)
//s += "_" + l.Code
}
return append(k, b...)
@@ -108,7 +108,7 @@ func FromDbKey(b []byte) ([]byte, error) {
}
typ := b[0]
b = b[1:]
- if typ & (DATATYPE_MENU | DATATYPE_TEMPLATE | DATATYPE_STATICLOAD) > 0 {
+ if typ&(DATATYPE_MENU|DATATYPE_TEMPLATE|DATATYPE_STATICLOAD) > 0 {
if len(b) > 6 {
if b[len(b)-4] == '_' {
b = b[:len(b)-4]
@@ -120,11 +120,11 @@ func FromDbKey(b []byte) ([]byte, error) {
// baseDb is a base class for all Db implementations.
type baseDb struct {
- pfx uint8
- sid []byte
- lock uint8
- lang *lang.Language
- seal bool
+ pfx uint8
+ sid []byte
+ lock uint8
+ lang *lang.Language
+ seal bool
connStr string
}
@@ -145,29 +145,30 @@ func NewDbBase() *DbBase {
}
// ensures default locking of read-only entries
-func(db *baseDb) defaultLock() {
+func (db *baseDb) defaultLock() {
db.lock |= safeLock
}
-func(bd *DbBase) Safe() bool {
- return bd.baseDb.lock & safeLock == safeLock
+func (bd *DbBase) Safe() bool {
+ return bd.baseDb.lock&safeLock == safeLock
}
-func(bd *DbBase) Prefix() uint8 {
+func (bd *DbBase) Prefix() uint8 {
return bd.baseDb.pfx
}
// SetPrefix implements the Db interface.
-func(bd *DbBase) SetPrefix(pfx uint8) {
+func (bd *DbBase) SetPrefix(pfx uint8) {
bd.baseDb.pfx = pfx
}
// SetLanguage implements the Db interface.
-func(bd *DbBase) SetLanguage(ln *lang.Language) {
+func (bd *DbBase) SetLanguage(ln *lang.Language) {
bd.baseDb.lang = ln
}
+
// SetSession implements the Db interface.
-func(bd *DbBase) SetSession(sessionId string) {
+func (bd *DbBase) SetSession(sessionId string) {
if sessionId == "" {
bd.baseDb.sid = []byte{}
} else {
@@ -176,7 +177,7 @@ func(bd *DbBase) SetSession(sessionId string) {
}
// SetLock implements the Db interface.
-func(bd *DbBase) SetLock(pfx uint8, lock bool) error {
+func (bd *DbBase) SetLock(pfx uint8, lock bool) error {
if bd.baseDb.seal {
return errors.New("SetLock on sealed db")
}
@@ -186,7 +187,7 @@ func(bd *DbBase) SetLock(pfx uint8, lock bool) error {
return nil
}
if lock {
- bd.baseDb.lock |= pfx
+ bd.baseDb.lock |= pfx
} else {
bd.baseDb.lock &= ^pfx
}
@@ -194,13 +195,13 @@ func(bd *DbBase) SetLock(pfx uint8, lock bool) error {
}
// CheckPut returns true if the current selected data type can be written to.
-func(bd *DbBase) CheckPut() bool {
- return bd.baseDb.pfx & bd.baseDb.lock == 0
+func (bd *DbBase) CheckPut() bool {
+ return bd.baseDb.pfx&bd.baseDb.lock == 0
}
func (bd *DbBase) ToSessionKey(pfx uint8, key []byte) []byte {
var b []byte
- if (pfx > datatype_sessioned_threshold) {
+ if pfx > datatype_sessioned_threshold {
b = append([]byte(bd.sid), key...)
} else {
b = key
@@ -208,7 +209,7 @@ func (bd *DbBase) ToSessionKey(pfx uint8, key []byte) []byte {
return b
}
-func(bd *DbBase) FromSessionKey(key []byte) ([]byte, error) {
+func (bd *DbBase) FromSessionKey(key []byte) ([]byte, error) {
if len(bd.baseDb.sid) == 0 {
return key, nil
}
@@ -221,7 +222,7 @@ func(bd *DbBase) FromSessionKey(key []byte) ([]byte, error) {
// ToKey creates a DbKey within the current session context.
//
// TODO: hard to read, clean up
-func(bd *DbBase) ToKey(ctx context.Context, key []byte) (LookupKey, error) {
+func (bd *DbBase) ToKey(ctx context.Context, key []byte) (LookupKey, error) {
var ln *lang.Language
var lk LookupKey
//var b []byte
@@ -232,7 +233,7 @@ func(bd *DbBase) ToKey(ctx context.Context, key []byte) (LookupKey, error) {
//b := ToSessionKey(db.pfx, db.sid, key)
b := bd.ToSessionKey(db.pfx, key)
lk.Default = ToDbKey(db.pfx, b, nil)
- if db.pfx & (DATATYPE_MENU | DATATYPE_TEMPLATE | DATATYPE_STATICLOAD) > 0 {
+ if db.pfx&(DATATYPE_MENU|DATATYPE_TEMPLATE|DATATYPE_STATICLOAD) > 0 {
if db.lang != nil {
ln = db.lang
} else {
@@ -250,7 +251,7 @@ func(bd *DbBase) ToKey(ctx context.Context, key []byte) (LookupKey, error) {
return lk, nil
}
-func(bd *DbBase) DecodeKey(ctx context.Context, key []byte) ([]byte, error) {
+func (bd *DbBase) DecodeKey(ctx context.Context, key []byte) ([]byte, error) {
var err error
oldKey := key
key, err = FromDbKey(key)
diff --git a/db/dbtest/testutil.go b/db/dbtest/testutil.go
@@ -9,19 +9,18 @@ import (
"path"
"testing"
- "git.defalsify.org/vise.git/lang"
"git.defalsify.org/vise.git/db"
+ "git.defalsify.org/vise.git/lang"
)
-
type testCase struct {
typ uint8
- s string
- k []byte
- v []byte
- x []byte
- l *lang.Language
- t string
+ s string
+ k []byte
+ v []byte
+ x []byte
+ l *lang.Language
+ t string
}
type testVector struct {
@@ -42,47 +41,47 @@ var (
generateSessionLanguageTestVectors,
}
dataTypeDebug = map[uint8]string{
- db.DATATYPE_BIN: "bytecode",
- db.DATATYPE_TEMPLATE: "template",
- db.DATATYPE_MENU: "menu",
+ db.DATATYPE_BIN: "bytecode",
+ db.DATATYPE_TEMPLATE: "template",
+ db.DATATYPE_MENU: "menu",
db.DATATYPE_STATICLOAD: "staticload",
- db.DATATYPE_STATE: "state",
- db.DATATYPE_USERDATA: "udata",
+ db.DATATYPE_STATE: "state",
+ db.DATATYPE_USERDATA: "udata",
}
)
-func(tc *testCase) Key() []byte {
+func (tc *testCase) Key() []byte {
return tc.k
}
-func(tc *testCase) Val() []byte {
+func (tc *testCase) Val() []byte {
return tc.v
}
-func(tc *testCase) Typ() uint8 {
+func (tc *testCase) Typ() uint8 {
return tc.typ
}
-func(tc *testCase) Session() string {
+func (tc *testCase) Session() string {
return tc.s
}
-func(tc *testCase) Lang() string {
+func (tc *testCase) Lang() string {
if tc.l == nil {
return ""
}
return tc.l.Code
}
-func(tc *testCase) Expect() []byte {
+func (tc *testCase) Expect() []byte {
return tc.x
}
-func(tc *testCase) Label() string {
+func (tc *testCase) Label() string {
return tc.t
}
-func(tv *testVector) add(typ uint8, k string, v string, session string, expect string, language string) {
+func (tv *testVector) add(typ uint8, k string, v string, session string, expect string, language string) {
var b []byte
var x []byte
var err error
@@ -101,7 +100,7 @@ func(tv *testVector) add(typ uint8, k string, v string, session string, expect s
b = []byte(v)
x = []byte(expect)
}
-
+
if language != "" {
lo, err := lang.LanguageFromCode(language)
if err != nil {
@@ -115,14 +114,14 @@ func(tv *testVector) add(typ uint8, k string, v string, session string, expect s
if ln != nil {
s = path.Join(s, language)
}
- o := &testCase {
+ o := &testCase{
typ: typ,
- k: []byte(k),
- v: b,
- s: session,
- x: x,
- l: ln,
- t: s,
+ k: []byte(k),
+ v: b,
+ s: session,
+ x: x,
+ l: ln,
+ t: s,
}
tv.c[s] = o
i := len(tv.v)
@@ -130,7 +129,7 @@ func(tv *testVector) add(typ uint8, k string, v string, session string, expect s
logg.Tracef("add testcase", "i", i, "s", s, "k", o.k)
}
-func(tv *testVector) next() (int, *testCase) {
+func (tv *testVector) next() (int, *testCase) {
i := tv.i
if i == len(tv.v) {
return -1, nil
@@ -139,11 +138,11 @@ func(tv *testVector) next() (int, *testCase) {
return i, tv.c[tv.v[i]]
}
-func(tv *testVector) rewind() {
+func (tv *testVector) rewind() {
tv.i = 0
}
-func(tv *testVector) put(ctx context.Context, db db.Db) error {
+func (tv *testVector) put(ctx context.Context, db db.Db) error {
var i int
var tc *testCase
defer tv.rewind()
@@ -174,7 +173,7 @@ func(tv *testVector) put(ctx context.Context, db db.Db) error {
return nil
}
-func(tv *testVector) label() string {
+func (tv *testVector) label() string {
return tv.s
}
@@ -292,7 +291,6 @@ func runTest(t *testing.T, ctx context.Context, db db.Db, vs testVector) error {
}
-
func runTests(t *testing.T, ctx context.Context, db db.Db) error {
for _, fn := range tests {
err := runTest(t, ctx, db, fn())
@@ -300,7 +298,7 @@ func runTests(t *testing.T, ctx context.Context, db db.Db) error {
return err
}
}
-
+
return nil
}
diff --git a/db/dump.go b/db/dump.go
@@ -8,10 +8,10 @@ type DumperFunc func(ctx context.Context) ([]byte, []byte)
type CloseFunc func() error
type Dumper struct {
- fn DumperFunc
- cfn CloseFunc
- k []byte
- v []byte
+ fn DumperFunc
+ cfn CloseFunc
+ k []byte
+ v []byte
nexted bool
}
@@ -21,7 +21,7 @@ func NewDumper(fn DumperFunc) *Dumper {
}
}
-func(d *Dumper) WithFirst(k []byte, v []byte) *Dumper {
+func (d *Dumper) WithFirst(k []byte, v []byte) *Dumper {
if d.nexted {
panic("already started")
}
@@ -31,12 +31,12 @@ func(d *Dumper) WithFirst(k []byte, v []byte) *Dumper {
return d
}
-func(d *Dumper) WithClose(fn func() error) *Dumper {
+func (d *Dumper) WithClose(fn func() error) *Dumper {
d.cfn = fn
return d
}
-func(d *Dumper) Next(ctx context.Context) ([]byte, []byte) {
+func (d *Dumper) Next(ctx context.Context) ([]byte, []byte) {
d.nexted = true
k := d.k
v := d.v
@@ -48,7 +48,7 @@ func(d *Dumper) Next(ctx context.Context) ([]byte, []byte) {
return k, v
}
-func(d *Dumper) Close() error {
+func (d *Dumper) Close() error {
if d.cfn != nil {
return d.cfn()
}
diff --git a/db/error.go b/db/error.go
@@ -11,8 +11,8 @@ const (
)
var (
- ErrTxExist = errors.New("tx already exists")
- ErrNoTx = errors.New("tx does not exist")
+ ErrTxExist = errors.New("tx already exists")
+ ErrNoTx = errors.New("tx does not exist")
ErrSingleTx = errors.New("not a multi-instruction tx")
)
@@ -27,7 +27,7 @@ func NewErrNotFound(k []byte) error {
}
// Error implements Error.
-func(e ErrNotFound) Error() string {
+func (e ErrNotFound) Error() string {
return fmt.Sprintf("%s%x", notFoundPrefix, e.k)
}
diff --git a/db/fs/dump.go b/db/fs/dump.go
@@ -8,7 +8,7 @@ import (
"git.defalsify.org/vise.git/db"
)
-func(fdb *fsDb) nextElement() []byte {
+func (fdb *fsDb) nextElement() []byte {
v := fdb.elements[0]
fdb.elements = fdb.elements[1:]
s := v.Name()
@@ -17,7 +17,7 @@ func(fdb *fsDb) nextElement() []byte {
return k
}
-func(fdb *fsDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
+func (fdb *fsDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
var err error
key = append([]byte{fdb.Prefix()}, key...)
fdb.matchPrefix = key
@@ -61,7 +61,7 @@ func(fdb *fsDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
return nil, db.NewErrNotFound(key)
}
-func(fdb *fsDb) dumpFunc(ctx context.Context) ([]byte, []byte) {
+func (fdb *fsDb) dumpFunc(ctx context.Context) ([]byte, []byte) {
if len(fdb.elements) == 0 {
return nil, nil
}
diff --git a/db/fs/fs.go b/db/fs/fs.go
@@ -2,8 +2,8 @@ package fs
import (
"context"
- "errors"
"encoding/base64"
+ "errors"
"fmt"
"io/fs"
"io/ioutil"
@@ -15,20 +15,19 @@ import (
// holds string (filepath) versions of LookupKey
type fsLookupKey struct {
- Default string
+ Default string
Translation string
}
// pure filesystem backend implementation if the Db interface.
type fsDb struct {
*db.DbBase
- dir string
- elements []os.DirEntry
+ dir string
+ elements []os.DirEntry
matchPrefix []byte
- binary bool
+ binary bool
}
-
// NewFsDb creates a filesystem backed Db implementation.
func NewFsDb() *fsDb {
db := &fsDb{
@@ -37,18 +36,18 @@ func NewFsDb() *fsDb {
return db
}
-func(fdb *fsDb) WithBinary() *fsDb {
+func (fdb *fsDb) WithBinary() *fsDb {
fdb.binary = true
return fdb
}
// String implements the string interface.
-func(fdb *fsDb) String() string {
+func (fdb *fsDb) String() string {
return "fsdb: " + fdb.dir
}
// Connect implements the Db interface.
-func(fdb *fsDb) Connect(ctx context.Context, connStr string) error {
+func (fdb *fsDb) Connect(ctx context.Context, connStr string) error {
if fdb.dir != "" {
logg.WarnCtxf(ctx, "already connected", "conn", fdb.dir)
return nil
@@ -64,7 +63,7 @@ func(fdb *fsDb) Connect(ctx context.Context, connStr string) error {
// ToKey overrides the BaseDb implementation, creating a base64 string
// if binary keys have been enabled
-func(fdb *fsDb) ToKey(ctx context.Context, key []byte) (db.LookupKey, error) {
+func (fdb *fsDb) ToKey(ctx context.Context, key []byte) (db.LookupKey, error) {
if fdb.binary {
s := base64.StdEncoding.EncodeToString(key)
key = []byte(s)
@@ -72,7 +71,7 @@ func(fdb *fsDb) ToKey(ctx context.Context, key []byte) (db.LookupKey, error) {
return fdb.DbBase.ToKey(ctx, key)
}
-func(fdb *fsDb) DecodeKey(ctx context.Context, key []byte) ([]byte, error) {
+func (fdb *fsDb) DecodeKey(ctx context.Context, key []byte) ([]byte, error) {
key, err := fdb.DbBase.DecodeKey(ctx, key)
if err != nil {
return nil, err
@@ -90,7 +89,7 @@ func(fdb *fsDb) DecodeKey(ctx context.Context, key []byte) ([]byte, error) {
}
// Get implements the Db interface.
-func(fdb *fsDb) Get(ctx context.Context, key []byte) ([]byte, error) {
+func (fdb *fsDb) Get(ctx context.Context, key []byte) ([]byte, error) {
var f *os.File
lk, err := fdb.ToKey(ctx, key)
if err != nil {
@@ -104,7 +103,7 @@ func(fdb *fsDb) Get(ctx context.Context, key []byte) ([]byte, error) {
if err != nil {
return nil, err
}
- for i, fp := range([]string{flk.Translation, flka.Translation, flk.Default, flka.Default}) {
+ for i, fp := range []string{flk.Translation, flka.Translation, flk.Default, flka.Default} {
if fp == "" {
logg.TraceCtxf(ctx, "fs get skip missing", "i", i)
continue
@@ -130,7 +129,7 @@ func(fdb *fsDb) Get(ctx context.Context, key []byte) ([]byte, error) {
}
// Put implements the Db interface.
-func(fdb *fsDb) Put(ctx context.Context, key []byte, val []byte) error {
+func (fdb *fsDb) Put(ctx context.Context, key []byte, val []byte) error {
if !fdb.CheckPut() {
return errors.New("unsafe put and safety set")
}
@@ -154,12 +153,12 @@ func(fdb *fsDb) Put(ctx context.Context, key []byte, val []byte) error {
}
// Close implements the Db interface.
-func(fdb *fsDb) Close(ctx context.Context) error {
+func (fdb *fsDb) Close(ctx context.Context) error {
return nil
}
// create a key safe for the filesystem.
-func(fdb *fsDb) pathFor(ctx context.Context, lk *db.LookupKey) (fsLookupKey, error) {
+func (fdb *fsDb) pathFor(ctx context.Context, lk *db.LookupKey) (fsLookupKey, error) {
var flk fsLookupKey
lk.Default[0] += 0x30
flk.Default = path.Join(fdb.dir, string(lk.Default))
@@ -171,7 +170,7 @@ func(fdb *fsDb) pathFor(ctx context.Context, lk *db.LookupKey) (fsLookupKey, err
}
// create a key safe for the filesystem, matching legacy resource.FsResource name.
-func(fdb *fsDb) altPathFor(ctx context.Context, lk *db.LookupKey) (fsLookupKey, error) {
+func (fdb *fsDb) altPathFor(ctx context.Context, lk *db.LookupKey) (fsLookupKey, error) {
var flk fsLookupKey
fb := string(lk.Default[1:])
if fdb.Prefix() == db.DATATYPE_BIN {
diff --git a/db/fs/fs_test.go b/db/fs/fs_test.go
@@ -91,7 +91,7 @@ func TestPutGetFsAlt(t *testing.T) {
if err != nil {
t.Fatal(err)
}
-
+
v, err := store.Get(ctx, []byte("inky"))
if err != nil {
t.Fatal(err)
diff --git a/db/gdbm/dump.go b/db/gdbm/dump.go
@@ -6,18 +6,18 @@ import (
"errors"
gdbm "github.com/graygnuorg/go-gdbm"
-
+
"git.defalsify.org/vise.git/db"
)
-func(gdb *gdbmDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
+func (gdb *gdbmDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
gdb.SetLanguage(nil)
lk, err := gdb.ToKey(ctx, key)
if err != nil {
return nil, err
}
key = lk.Default
-
+
gdb.it = gdb.conn.Iterator()
for true {
k, err := gdb.it()
@@ -47,7 +47,7 @@ func(gdb *gdbmDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
return nil, db.NewErrNotFound(key)
}
-func(gdb *gdbmDb) dumpFunc(ctx context.Context) ([]byte, []byte) {
+func (gdb *gdbmDb) dumpFunc(ctx context.Context) ([]byte, []byte) {
var k []byte
var match bool
var err error
diff --git a/db/gdbm/gdbm.go b/db/gdbm/gdbm.go
@@ -14,11 +14,11 @@ import (
// gdbmDb is a gdbm backend implementation of the Db interface.
type gdbmDb struct {
*db.DbBase
- conn *gdbm.Database
+ conn *gdbm.Database
readOnly bool
- prefix uint8
- it gdbm.DatabaseIterator
- itBase []byte
+ prefix uint8
+ it gdbm.DatabaseIterator
+ itBase []byte
}
// Creates a new gdbm backed Db implementation.
@@ -36,13 +36,13 @@ func NewGdbmDb() *gdbmDb {
// However, only one single write database.
//
// Readonly cannot be set when creating a new database.
-func(gdb *gdbmDb) WithReadOnly() *gdbmDb {
+func (gdb *gdbmDb) WithReadOnly() *gdbmDb {
gdb.readOnly = true
return gdb
}
// String implements the string interface.
-func(gdb *gdbmDb) String() string {
+func (gdb *gdbmDb) String() string {
fn, err := gdb.conn.FileName()
if err != nil {
fn = "??"
@@ -51,7 +51,7 @@ func(gdb *gdbmDb) String() string {
}
// Connect implements Db
-func(gdb *gdbmDb) Connect(ctx context.Context, connStr string) error {
+func (gdb *gdbmDb) Connect(ctx context.Context, connStr string) error {
if gdb.conn != nil {
logg.WarnCtxf(ctx, "already connected", "conn", gdb.conn)
return nil
@@ -59,7 +59,7 @@ func(gdb *gdbmDb) Connect(ctx context.Context, connStr string) error {
var db *gdbm.Database
cfg := gdbm.DatabaseConfig{
FileName: connStr,
- Flags: gdbm.OF_NOLOCK | gdbm.OF_PREREAD,
+ Flags: gdbm.OF_NOLOCK | gdbm.OF_PREREAD,
FileMode: 0600,
}
@@ -89,7 +89,7 @@ func(gdb *gdbmDb) Connect(ctx context.Context, connStr string) error {
}
// Put implements Db
-func(gdb *gdbmDb) Put(ctx context.Context, key []byte, val []byte) error {
+func (gdb *gdbmDb) Put(ctx context.Context, key []byte, val []byte) error {
if !gdb.CheckPut() {
return errors.New("unsafe put and safety set")
}
@@ -105,7 +105,7 @@ func(gdb *gdbmDb) Put(ctx context.Context, key []byte, val []byte) error {
}
// Get implements Db
-func(gdb *gdbmDb) Get(ctx context.Context, key []byte) ([]byte, error) {
+func (gdb *gdbmDb) Get(ctx context.Context, key []byte) ([]byte, error) {
var v []byte
lk, err := gdb.ToKey(ctx, key)
if err != nil {
@@ -133,7 +133,7 @@ func(gdb *gdbmDb) Get(ctx context.Context, key []byte) ([]byte, error) {
}
// Close implements Db
-func(gdb *gdbmDb) Close(ctx context.Context) error {
+func (gdb *gdbmDb) Close(ctx context.Context) error {
logg.TraceCtxf(ctx, "closing gdbm", "path", gdb.conn)
return gdb.conn.Close()
}
diff --git a/db/mem/dump.go b/db/mem/dump.go
@@ -7,6 +7,6 @@ import (
"git.defalsify.org/vise.git/db"
)
-func(mdb *memDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
+func (mdb *memDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
return nil, errors.New("unimplemented")
}
diff --git a/db/mem/mem.go b/db/mem/mem.go
@@ -10,7 +10,7 @@ import (
// holds string (hex) versions of lookupKey
type memLookupKey struct {
- Default string
+ Default string
Translation string
}
@@ -29,12 +29,12 @@ func NewMemDb() *memDb {
}
// String implements the string interface.
-func(mdb *memDb) String() string {
+func (mdb *memDb) String() string {
return "memdb"
}
// Connect implements Db
-func(mdb *memDb) Connect(ctx context.Context, connStr string) error {
+func (mdb *memDb) Connect(ctx context.Context, connStr string) error {
if mdb.store != nil {
logg.WarnCtxf(ctx, "already connected")
return nil
@@ -44,7 +44,7 @@ func(mdb *memDb) Connect(ctx context.Context, connStr string) error {
}
// convert to a supported map key type
-func(mdb *memDb) toHexKey(ctx context.Context, key []byte) (memLookupKey, error) {
+func (mdb *memDb) toHexKey(ctx context.Context, key []byte) (memLookupKey, error) {
var mk memLookupKey
lk, err := mdb.ToKey(ctx, key)
mk.Default = hex.EncodeToString(lk.Default)
@@ -56,7 +56,7 @@ func(mdb *memDb) toHexKey(ctx context.Context, key []byte) (memLookupKey, error)
}
// Get implements Db
-func(mdb *memDb) Get(ctx context.Context, key []byte) ([]byte, error) {
+func (mdb *memDb) Get(ctx context.Context, key []byte) ([]byte, error) {
var v []byte
var ok bool
mk, err := mdb.toHexKey(ctx, key)
@@ -79,7 +79,7 @@ func(mdb *memDb) Get(ctx context.Context, key []byte) ([]byte, error) {
}
// Put implements Db
-func(mdb *memDb) Put(ctx context.Context, key []byte, val []byte) error {
+func (mdb *memDb) Put(ctx context.Context, key []byte, val []byte) error {
var k string
if !mdb.CheckPut() {
return errors.New("unsafe put and safety set")
@@ -99,6 +99,6 @@ func(mdb *memDb) Put(ctx context.Context, key []byte, val []byte) error {
}
// Close implements Db
-func(mdb *memDb) Close(ctx context.Context) error {
+func (mdb *memDb) Close(ctx context.Context) error {
return nil
}
diff --git a/db/postgres/dump.go b/db/postgres/dump.go
@@ -1,13 +1,13 @@
package postgres
import (
- "fmt"
"context"
+ "fmt"
"git.defalsify.org/vise.git/db"
)
-func(pdb *pgDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
+func (pdb *pgDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
tx, err := pdb.conn.BeginTx(ctx, defaultTxOptions)
if err != nil {
return nil, err
@@ -48,7 +48,7 @@ func(pdb *pgDb) Dump(ctx context.Context, key []byte) (*db.Dumper, error) {
return nil, db.NewErrNotFound(k)
}
-func(pdb *pgDb) dumpFunc(ctx context.Context) ([]byte, []byte) {
+func (pdb *pgDb) dumpFunc(ctx context.Context) ([]byte, []byte) {
var kk []byte
var vv []byte
if !pdb.it.Next() {
@@ -68,7 +68,7 @@ func(pdb *pgDb) dumpFunc(ctx context.Context) ([]byte, []byte) {
return k, vv
}
-func(pdb *pgDb) closeFunc() error {
+func (pdb *pgDb) closeFunc() error {
if pdb.it != nil {
pdb.it.Close()
pdb.it = nil
diff --git a/db/postgres/dump_test.go b/db/postgres/dump_test.go
@@ -5,9 +5,9 @@ import (
"context"
"testing"
- pgxmock "github.com/pashagolub/pgxmock/v4"
- "github.com/jackc/pgx/v5/pgtype"
"github.com/jackc/pgx/v5/pgconn"
+ "github.com/jackc/pgx/v5/pgtype"
+ pgxmock "github.com/pashagolub/pgxmock/v4"
"git.defalsify.org/vise.git/db"
)
@@ -26,35 +26,35 @@ func TestDumpPg(t *testing.T) {
store.SetSession(ses)
ctx := context.Background()
-// store.SetPrefix(db.DATATYPE_USERDATA)
-// err = store.Put(ctx, []byte("bar"), []byte("inky"))
-// if err != nil {
-// t.Fatal(err)
-// }
-// err = store.Put(ctx, []byte("foobar"), []byte("pinky"))
-// if err != nil {
-// t.Fatal(err)
-// }
-// err = store.Put(ctx, []byte("foobarbaz"), []byte("blinky"))
-// if err != nil {
-// t.Fatal(err)
-// }
-// err = store.Put(ctx, []byte("xyzzy"), []byte("clyde"))
-// if err != nil {
-// t.Fatal(err)
-// }
+ // store.SetPrefix(db.DATATYPE_USERDATA)
+ // err = store.Put(ctx, []byte("bar"), []byte("inky"))
+ // if err != nil {
+ // t.Fatal(err)
+ // }
+ // err = store.Put(ctx, []byte("foobar"), []byte("pinky"))
+ // if err != nil {
+ // t.Fatal(err)
+ // }
+ // err = store.Put(ctx, []byte("foobarbaz"), []byte("blinky"))
+ // if err != nil {
+ // t.Fatal(err)
+ // }
+ // err = store.Put(ctx, []byte("xyzzy"), []byte("clyde"))
+ // if err != nil {
+ // t.Fatal(err)
+ // }
typMap := pgtype.NewMap()
k := []byte("xyzzy.foo")
mockVfd := pgconn.FieldDescription{
- Name: "value",
+ Name: "value",
DataTypeOID: pgtype.ByteaOID,
- Format: typMap.FormatCodeForOID(pgtype.ByteaOID),
+ Format: typMap.FormatCodeForOID(pgtype.ByteaOID),
}
mockKfd := pgconn.FieldDescription{
- Name: "key",
+ Name: "key",
DataTypeOID: pgtype.ByteaOID,
- Format: typMap.FormatCodeForOID(pgtype.ByteaOID),
+ Format: typMap.FormatCodeForOID(pgtype.ByteaOID),
}
rows := pgxmock.NewRowsWithColumnDefinition(mockKfd, mockVfd)
//rows = rows.AddRow([]byte("bar"), []byte("inky"))
diff --git a/db/postgres/live_test.go b/db/postgres/live_test.go
@@ -1,4 +1,5 @@
//go:build testlive
+
package postgres
import (
@@ -34,7 +35,7 @@ func TestLivePutGetPg(t *testing.T) {
store.SetSession(ses)
ctx := context.Background()
- dbi = store
+ dbi = store
_ = dbi
err := store.Connect(ctx, "postgres://vise:esiv@localhost:5432/visedb")
diff --git a/db/postgres/pg.go b/db/postgres/pg.go
@@ -5,8 +5,8 @@ import (
"errors"
"fmt"
- "github.com/jackc/pgx/v5/pgxpool"
pgx "github.com/jackc/pgx/v5"
+ "github.com/jackc/pgx/v5/pgxpool"
"git.defalsify.org/vise.git/db"
)
@@ -23,14 +23,14 @@ type PgInterface interface {
// pgDb is a Postgres backend implementation of the Db interface.
type pgDb struct {
*db.DbBase
- conn PgInterface
+ conn PgInterface
schema string
prefix uint8
- prepd bool
- it pgx.Rows
+ prepd bool
+ it pgx.Rows
itBase []byte
- tx pgx.Tx
- multi bool
+ tx pgx.Tx
+ multi bool
}
// NewpgDb creates a new Postgres backed Db implementation.
@@ -43,18 +43,18 @@ func NewPgDb() *pgDb {
}
// WithSchema sets the Postgres schema to use for the storage table.
-func(pdb *pgDb) WithSchema(schema string) *pgDb {
+func (pdb *pgDb) WithSchema(schema string) *pgDb {
pdb.schema = schema
return pdb
}
-func(pdb *pgDb) WithConnection(pi PgInterface) *pgDb {
+func (pdb *pgDb) WithConnection(pi PgInterface) *pgDb {
pdb.conn = pi
return pdb
}
// Connect implements Db.
-func(pdb *pgDb) Connect(ctx context.Context, connStr string) error {
+func (pdb *pgDb) Connect(ctx context.Context, connStr string) error {
if pdb.conn != nil {
logg.WarnCtxf(ctx, "Pg already connected")
return nil
@@ -132,7 +132,7 @@ func (pdb *pgDb) Abort(ctx context.Context) {
}
// Put implements Db.
-func(pdb *pgDb) Put(ctx context.Context, key []byte, val []byte) error {
+func (pdb *pgDb) Put(ctx context.Context, key []byte, val []byte) error {
if !pdb.CheckPut() {
return errors.New("unsafe put and safety set")
}
@@ -221,7 +221,7 @@ func (pdb *pgDb) Get(ctx context.Context, key []byte) ([]byte, error) {
}
// Close implements Db.
-func(pdb *pgDb) Close(ctx context.Context) error {
+func (pdb *pgDb) Close(ctx context.Context) error {
err := pdb.Stop(ctx)
if err == db.ErrNoTx {
err = nil
@@ -231,7 +231,7 @@ func(pdb *pgDb) Close(ctx context.Context) error {
}
// set up table
-func(pdb *pgDb) ensureTable(ctx context.Context) error {
+func (pdb *pgDb) ensureTable(ctx context.Context) error {
if pdb.prepd {
logg.WarnCtxf(ctx, "ensureTable called more than once")
return nil
diff --git a/db/postgres/pg_test.go b/db/postgres/pg_test.go
@@ -5,9 +5,9 @@ import (
"context"
"testing"
- pgxmock "github.com/pashagolub/pgxmock/v4"
- "github.com/jackc/pgx/v5/pgtype"
"github.com/jackc/pgx/v5/pgconn"
+ "github.com/jackc/pgx/v5/pgtype"
+ pgxmock "github.com/pashagolub/pgxmock/v4"
"git.defalsify.org/vise.git/db"
"git.defalsify.org/vise.git/db/dbtest"
@@ -17,9 +17,9 @@ var (
typMap = pgtype.NewMap()
mockVfd = pgconn.FieldDescription{
- Name: "value",
+ Name: "value",
DataTypeOID: pgtype.ByteaOID,
- Format: typMap.FormatCodeForOID(pgtype.ByteaOID),
+ Format: typMap.FormatCodeForOID(pgtype.ByteaOID),
}
)
@@ -57,7 +57,7 @@ func TestPutGetPg(t *testing.T) {
store.SetSession(ses)
ctx := context.Background()
- dbi = store
+ dbi = store
_ = dbi
k := []byte("foo")
@@ -137,7 +137,7 @@ func TestPostgresTxAbort(t *testing.T) {
store.SetSession(ses)
ctx := context.Background()
- dbi = store
+ dbi = store
_ = dbi
resInsert := pgxmock.NewResult("UPDATE", 1)
@@ -176,7 +176,7 @@ func TestPostgresTxCommitOnClose(t *testing.T) {
store.SetSession(ses)
ctx := context.Background()
- dbi = store
+ dbi = store
_ = dbi
resInsert := pgxmock.NewResult("UPDATE", 1)
@@ -257,7 +257,7 @@ func TestPostgresTxStartStop(t *testing.T) {
store.SetSession(ses)
ctx := context.Background()
- dbi = store
+ dbi = store
_ = dbi
resInsert := pgxmock.NewResult("UPDATE", 1)
diff --git a/debug/map.go b/debug/map.go
@@ -9,7 +9,7 @@ import (
)
type NodeMap struct {
- st *state.State
+ st *state.State
root Node
outs []string
}
@@ -22,7 +22,7 @@ func NewNodeMap(root string) *NodeMap {
return n
}
-func(nm *NodeMap) Run(ctx context.Context, rs resource.Resource) error {
+func (nm *NodeMap) Run(ctx context.Context, rs resource.Resource) error {
ph := NewNodeParseHandler(&nm.root)
b, err := rs.GetCode(ctx, nm.root.Name)
if err != nil {
@@ -36,8 +36,8 @@ func(nm *NodeMap) Run(ctx context.Context, rs resource.Resource) error {
return nm.processNode(ctx, &nm.root, rs)
}
-func(nm *NodeMap) processNode(ctx context.Context, node *Node, rs resource.Resource) error {
- for i, v := range(nm.st.ExecPath) {
+func (nm *NodeMap) processNode(ctx context.Context, node *Node, rs resource.Resource) error {
+ for i, v := range nm.st.ExecPath {
if v == node.Name {
logg.InfoCtxf(ctx, "loop detected", "pos", i, "node", node.Name, "path", nm.st.ExecPath)
return nil
diff --git a/debug/node.go b/debug/node.go
@@ -1,9 +1,9 @@
package debug
type Node struct {
- Name string
+ Name string
Description string
- conn []string
+ conn []string
}
var (
@@ -13,7 +13,7 @@ var (
func (n *Node) haveConn(peer string) bool {
var v string
- for _, v = range(n.conn) {
+ for _, v = range n.conn {
if peer == v {
return true
}
diff --git a/debug/parse.go b/debug/parse.go
@@ -1,8 +1,8 @@
package debug
import (
- "git.defalsify.org/vise.git/vm"
"git.defalsify.org/vise.git/logging"
+ "git.defalsify.org/vise.git/vm"
)
var (
@@ -11,9 +11,9 @@ var (
type NodeParseHandler struct {
*vm.ParseHandler
- node *Node
- parentMOutFunc func(string, string) error
- parentMoveFunc func(string) error
+ node *Node
+ parentMOutFunc func(string, string) error
+ parentMoveFunc func(string) error
parentInCmpFunc func(string, string) error
parentCatchFunc func(string, uint32, bool) error
}
@@ -44,7 +44,7 @@ func (np *NodeParseHandler) mout(sym string, sel string) error {
func (np *NodeParseHandler) move(sym string) error {
var node Node
- if (sym == "<" || sym == ">" || sym == "^" || sym == "_" || sym == ".") {
+ if sym == "<" || sym == ">" || sym == "^" || sym == "_" || sym == "." {
logg.Debugf("skip lateral move")
return np.parentMoveFunc(sym)
}
@@ -58,12 +58,11 @@ func (np *NodeParseHandler) move(sym string) error {
func (np *NodeParseHandler) incmp(sym string, sel string) error {
var node Node
- if (sym == "<" || sym == ">" || sym == "^" || sym == "_" || sym == ".") {
+ if sym == "<" || sym == ">" || sym == "^" || sym == "_" || sym == "." {
logg.Debugf("skip relative move")
return np.parentInCmpFunc(sym, sel)
}
-
node.Name = sym
np.node.Connect(node)
logg.Debugf("connect INCMP", "src", np.node.Name, "dst", node.Name)
@@ -73,7 +72,7 @@ func (np *NodeParseHandler) incmp(sym string, sel string) error {
func (np *NodeParseHandler) catch(sym string, flag uint32, inv bool) error {
var node Node
- if (sym == "<" || sym == ">" || sym == "^" || sym == "_" || sym == ".") {
+ if sym == "<" || sym == ">" || sym == "^" || sym == "_" || sym == "." {
logg.Debugf("skip relative move")
return np.parentMoveFunc(sym)
}
diff --git a/dev/asm/main.go b/dev/asm/main.go
@@ -15,16 +15,15 @@ import (
"git.defalsify.org/vise.git/asm"
)
-
type arg struct {
- One *string `(@Sym | @NumFirst)`
- Two *string `((@Sym | @NumFirst) Whitespace?)?`
+ One *string `(@Sym | @NumFirst)`
+ Two *string `((@Sym | @NumFirst) Whitespace?)?`
Three *string `((@Sym | @NumFirst) Whitespace?)?`
}
type instruction struct {
- OpCode string `@Ident`
- OpArg arg `(Whitespace @@)?`
+ OpCode string `@Ident`
+ OpArg arg `(Whitespace @@)?`
Comment string `Comment? EOL`
}
@@ -34,8 +33,7 @@ type asmAsm struct {
type processor struct {
*asm.FlagParser
-
-}
+}
func newProcessor(fp string) (*processor, error) {
o := &processor{
@@ -45,8 +43,7 @@ func newProcessor(fp string) (*processor, error) {
return o, err
}
-
-func(p *processor) processFlag(s []string, one *string, two *string) ([]string, error) {
+func (p *processor) processFlag(s []string, one *string, two *string) ([]string, error) {
_, err := strconv.Atoi(*one)
if err != nil {
r, err := p.GetAsString(*one)
@@ -61,7 +58,7 @@ func(p *processor) processFlag(s []string, one *string, two *string) ([]string,
return append(s, *two), nil
}
-func(p *processor) pass(s []string, a arg) []string {
+func (p *processor) pass(s []string, a arg) []string {
for _, r := range []*string{a.One, a.Two, a.Three} {
if r == nil {
break
@@ -71,7 +68,7 @@ func(p *processor) pass(s []string, a arg) []string {
return s
}
-func(pp *processor) run(b []byte) ([]byte, error) {
+func (pp *processor) run(b []byte) ([]byte, error) {
asmLexer := lexer.MustSimple([]lexer.SimpleRule{
{"Comment", `(?:#)[^\n]*`},
{"Ident", `^[A-Z]+`},
@@ -89,25 +86,25 @@ func(pp *processor) run(b []byte) ([]byte, error) {
if err != nil {
return nil, err
}
-
+
b = []byte{}
for _, v := range ast.Instructions {
s := []string{v.OpCode}
if v.OpArg.One != nil {
switch v.OpCode {
- case "CATCH":
- s = append(s, *v.OpArg.One)
- s, err = pp.processFlag(s, v.OpArg.Two, v.OpArg.Three)
- if err != nil {
- return nil, err
- }
- case "CROAK":
- s, err = pp.processFlag(s, v.OpArg.One, v.OpArg.Two)
- if err != nil {
- return nil, err
- }
- default:
- s = pp.pass(s, v.OpArg)
+ case "CATCH":
+ s = append(s, *v.OpArg.One)
+ s, err = pp.processFlag(s, v.OpArg.Two, v.OpArg.Three)
+ if err != nil {
+ return nil, err
+ }
+ case "CROAK":
+ s, err = pp.processFlag(s, v.OpArg.One, v.OpArg.Two)
+ if err != nil {
+ return nil, err
+ }
+ default:
+ s = pp.pass(s, v.OpArg)
}
}
b = append(b, []byte(strings.Join(s, " "))...)
@@ -121,7 +118,7 @@ func main() {
var ppfp string
flag.StringVar(&ppfp, "f", "", "preprocessor data to load")
flag.Parse()
- if (len(flag.Args()) < 1) {
+ if len(flag.Args()) < 1 {
os.Exit(1)
}
fp := flag.Arg(0)
diff --git a/dev/dbconvert/main.go b/dev/dbconvert/main.go
@@ -9,8 +9,8 @@ import (
"io/fs"
"log"
"os"
- "path/filepath"
"path"
+ "path/filepath"
"strings"
"git.defalsify.org/vise.git/db"
@@ -20,37 +20,37 @@ import (
)
var (
- binaryPrefix = ".bin"
- menuPrefix = "menu"
+ binaryPrefix = ".bin"
+ menuPrefix = "menu"
staticloadPrefix = ".txt"
- templatePrefix = ""
- scan = make(map[string]string)
- logg = logging.NewVanilla()
- dbg = map[uint8]string{
- db.DATATYPE_BIN: "BIN",
- db.DATATYPE_TEMPLATE: "TEMPLATE",
- db.DATATYPE_MENU: "MENU",
+ templatePrefix = ""
+ scan = make(map[string]string)
+ logg = logging.NewVanilla()
+ dbg = map[uint8]string{
+ db.DATATYPE_BIN: "BIN",
+ db.DATATYPE_TEMPLATE: "TEMPLATE",
+ db.DATATYPE_MENU: "MENU",
db.DATATYPE_STATICLOAD: "STATICLOAD",
}
)
type scanner struct {
ctx context.Context
- db db.Db
+ db db.Db
}
func newScanner(ctx context.Context, db db.Db) (*scanner, error) {
return &scanner{
ctx: ctx,
- db: db,
+ db: db,
}, nil
}
-func(sc *scanner) Close() error {
+func (sc *scanner) Close() error {
return sc.db.Close(sc.ctx)
}
-func(sc *scanner) Scan(fp string, d fs.DirEntry, err error) error {
+func (sc *scanner) Scan(fp string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
@@ -59,38 +59,38 @@ func(sc *scanner) Scan(fp string, d fs.DirEntry, err error) error {
}
fx := path.Ext(fp)
fb := path.Base(fp)
- if (len(fb) == 0) {
+ if len(fb) == 0 {
return nil
}
- if (fb[0] < 0x61 || fb[0] > 0x7A) {
+ if fb[0] < 0x61 || fb[0] > 0x7A {
return nil
}
sc.db.SetPrefix(db.DATATYPE_UNKNOWN)
switch fx {
- case binaryPrefix:
- sc.db.SetPrefix(db.DATATYPE_BIN)
- //typ = db.DATATYPE_BIN
- case templatePrefix:
- if strings.Contains(fb, "_menu") {
- sc.db.SetPrefix(db.DATATYPE_TEMPLATE)
- //typ = db.DATATYPE_TEMPLATE
- } else {
- sc.db.SetPrefix(db.DATATYPE_MENU)
- //typ = db.DATATYPE_MENU
- }
- case staticloadPrefix:
- sc.db.SetPrefix(db.DATATYPE_STATICLOAD)
- default:
- log.Printf("skip foreign file: %s", fp)
- return nil
+ case binaryPrefix:
+ sc.db.SetPrefix(db.DATATYPE_BIN)
+ //typ = db.DATATYPE_BIN
+ case templatePrefix:
+ if strings.Contains(fb, "_menu") {
+ sc.db.SetPrefix(db.DATATYPE_TEMPLATE)
+ //typ = db.DATATYPE_TEMPLATE
+ } else {
+ sc.db.SetPrefix(db.DATATYPE_MENU)
+ //typ = db.DATATYPE_MENU
+ }
+ case staticloadPrefix:
+ sc.db.SetPrefix(db.DATATYPE_STATICLOAD)
+ default:
+ log.Printf("skip foreign file: %s", fp)
+ return nil
}
f, err := os.Open(fp)
defer f.Close()
- if err != nil{
+ if err != nil {
return err
}
v, err := io.ReadAll(f)
- if err != nil{
+ if err != nil {
return err
}
@@ -151,7 +151,7 @@ func main() {
fmt.Fprintf(os.Stderr, "failed to connect to output db: %s", err)
os.Exit(1)
}
-
+
store.SetLock(db.DATATYPE_BIN, false)
store.SetLock(db.DATATYPE_TEMPLATE, false)
store.SetLock(db.DATATYPE_MENU, false)
diff --git a/dev/disasm/main.go b/dev/disasm/main.go
@@ -2,14 +2,14 @@ package main
import (
"fmt"
- "os"
"io/ioutil"
+ "os"
"git.defalsify.org/vise.git/vm"
)
func main() {
- if (len(os.Args) < 2) {
+ if len(os.Args) < 2 {
os.Exit(1)
}
fp := os.Args[1]
diff --git a/dev/gettext/export/main.go b/dev/gettext/export/main.go
@@ -8,12 +8,11 @@ import (
"path"
"strings"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/debug"
"git.defalsify.org/vise.git/lang"
- "git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/logging"
- fsdb "git.defalsify.org/vise.git/db/fs"
-
+ "git.defalsify.org/vise.git/resource"
)
var (
@@ -21,27 +20,27 @@ var (
)
type translator struct {
- langs []lang.Language
+ langs []lang.Language
haveLang map[string]bool
- ctx context.Context
- rs *resource.PoResource
- outPath string
+ ctx context.Context
+ rs *resource.PoResource
+ outPath string
madePath bool
}
func newTranslator(ctx context.Context, defaultLanguage lang.Language, inPath string, outPath string) *translator {
tr := &translator{
- langs: []lang.Language{defaultLanguage},
+ langs: []lang.Language{defaultLanguage},
haveLang: make(map[string]bool),
- ctx: ctx,
- rs: resource.NewPoResource(defaultLanguage, inPath),
- outPath: outPath,
+ ctx: ctx,
+ rs: resource.NewPoResource(defaultLanguage, inPath),
+ outPath: outPath,
}
tr.haveLang[defaultLanguage.Code] = true
return tr
}
-func(tr *translator) AddLang(ln lang.Language) error {
+func (tr *translator) AddLang(ln lang.Language) error {
var ok bool
_, ok = tr.haveLang[ln.Code]
if !ok {
@@ -52,9 +51,9 @@ func(tr *translator) AddLang(ln lang.Language) error {
return nil
}
-func(tr *translator) nodeFunc(node *debug.Node) error {
+func (tr *translator) nodeFunc(node *debug.Node) error {
sym := node.Name
- for i, ln := range(tr.langs) {
+ for i, ln := range tr.langs {
ctx := context.WithValue(tr.ctx, "Language", ln)
s, err := tr.rs.GetTemplate(ctx, sym)
if err != nil {
@@ -73,7 +72,7 @@ func(tr *translator) nodeFunc(node *debug.Node) error {
fb += "_" + ln.Code
}
fp := path.Join(tr.outPath, fb)
- w, err := os.OpenFile(fp, os.O_WRONLY | os.O_CREATE, 0644)
+ w, err := os.OpenFile(fp, os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
return err
}
@@ -88,8 +87,8 @@ func(tr *translator) nodeFunc(node *debug.Node) error {
return nil
}
-func(tr *translator) menuFunc(sym string) error {
- for i, ln := range(tr.langs) {
+func (tr *translator) menuFunc(sym string) error {
+ for i, ln := range tr.langs {
ctx := context.WithValue(tr.ctx, "Language", ln)
s, err := tr.rs.GetMenu(ctx, sym)
if err != nil {
@@ -110,7 +109,7 @@ func(tr *translator) menuFunc(sym string) error {
}
// TODO: use lang filename generator func instead
fp := path.Join(tr.outPath, fb)
- w, err := os.OpenFile(fp, os.O_WRONLY | os.O_CREATE, 0644)
+ w, err := os.OpenFile(fp, os.O_WRONLY|os.O_CREATE, 0644)
if err != nil {
return err
}
@@ -125,7 +124,7 @@ func(tr *translator) menuFunc(sym string) error {
return nil
}
-func(tr *translator) Close() error {
+func (tr *translator) Close() error {
return nil
}
@@ -133,7 +132,7 @@ type langVar struct {
v []lang.Language
}
-func(lv *langVar) Set(s string) error {
+func (lv *langVar) Set(s string) error {
v, err := lang.LanguageFromCode(s)
if err != nil {
return err
@@ -142,15 +141,15 @@ func(lv *langVar) Set(s string) error {
return err
}
-func(lv *langVar) String() string {
+func (lv *langVar) String() string {
var s []string
- for _, v := range(lv.v) {
+ for _, v := range lv.v {
s = append(s, v.Code)
}
return strings.Join(s, ",")
}
-func(lv *langVar) Langs() []lang.Language {
+func (lv *langVar) Langs() []lang.Language {
return lv.v
}
@@ -195,7 +194,7 @@ func main() {
}
tr := newTranslator(ctx, ln, inDir, outDir)
defer tr.Close()
- for _, ln := range(langs.Langs()) {
+ for _, ln := range langs.Langs() {
logg.DebugCtxf(ctx, "lang", "lang", ln)
err = tr.AddLang(ln)
if err != nil {
@@ -210,8 +209,8 @@ func main() {
fmt.Fprintf(os.Stderr, "node tree process fail: %v", err)
os.Exit(1)
}
-
- for k, v := range(debug.NodeIndex) {
+
+ for k, v := range debug.NodeIndex {
logg.Tracef("processing node", "sym", k)
err = tr.nodeFunc(&v)
if err != nil {
@@ -220,7 +219,7 @@ func main() {
}
}
- for k, _ := range(debug.MenuIndex) {
+ for k, _ := range debug.MenuIndex {
logg.Tracef("processing menu", "sym", k)
err = tr.menuFunc(k)
if err != nil {
diff --git a/dev/gettext/import/main.go b/dev/gettext/import/main.go
@@ -9,16 +9,15 @@ import (
"path"
"strings"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/debug"
"git.defalsify.org/vise.git/lang"
- "git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/logging"
- fsdb "git.defalsify.org/vise.git/db/fs"
-
+ "git.defalsify.org/vise.git/resource"
)
var (
- logg = logging.NewVanilla()
+ logg = logging.NewVanilla()
writeDomains = []string{
resource.PoDomain,
resource.TemplateKeyPoDomain,
@@ -28,23 +27,23 @@ var (
)
type translator struct {
- langs []lang.Language
- ctx context.Context
- rs resource.Resource
+ langs []lang.Language
+ ctx context.Context
+ rs resource.Resource
newline bool
- d string
+ d string
}
func newTranslator(ctx context.Context, rs resource.Resource, outPath string, newline bool) *translator {
return &translator{
- ctx: ctx,
- rs: rs,
- d: outPath,
+ ctx: ctx,
+ rs: rs,
+ d: outPath,
newline: newline,
}
}
-func(tr *translator) ensureFileNameFor(ln lang.Language, domain string) (string, error) {
+func (tr *translator) ensureFileNameFor(ln lang.Language, domain string) (string, error) {
fileName := domain + ".po"
p := path.Join(tr.d, ln.Code)
err := os.MkdirAll(p, 0700)
@@ -55,16 +54,16 @@ func(tr *translator) ensureFileNameFor(ln lang.Language, domain string) (string,
}
// skip default*.po for translations other than default
-func(tr *translator) writersFor(ln lang.Language) ([]io.WriteCloser, error) {
+func (tr *translator) writersFor(ln lang.Language) ([]io.WriteCloser, error) {
var r []io.WriteCloser
_, ready := writeDomainReady[ln.Code]
- for _, v := range(writeDomains) {
+ for _, v := range writeDomains {
fp, err := tr.ensureFileNameFor(ln, v)
if err != nil {
return r, err
}
if !ready {
- w, err := os.OpenFile(fp, os.O_WRONLY | os.O_CREATE | os.O_TRUNC, 0644)
+ w, err := os.OpenFile(fp, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0644)
if err != nil {
return r, err
}
@@ -80,7 +79,7 @@ msgstr ""
}
w.Close()
}
- w, err := os.OpenFile(fp, os.O_WRONLY | os.O_APPEND, 0644)
+ w, err := os.OpenFile(fp, os.O_WRONLY|os.O_APPEND, 0644)
logg.DebugCtxf(tr.ctx, "writer", "fp", fp)
if err != nil {
return r, err
@@ -91,7 +90,7 @@ msgstr ""
return r, nil
}
-func(tr *translator) writeTranslation(w io.Writer, sym string, msgid string, msgstr string) error {
+func (tr *translator) writeTranslation(w io.Writer, sym string, msgid string, msgstr string) error {
s := fmt.Sprintf(`#: vise_node.%s
msgid ""
%s
@@ -106,16 +105,16 @@ msgstr ""
return nil
}
-func(tr *translator) closeWriters(writers []io.WriteCloser) {
- for _, w := range(writers) {
+func (tr *translator) closeWriters(writers []io.WriteCloser) {
+ for _, w := range writers {
w.Close()
}
}
// TODO: DRY; merge with menuFunc
-func(tr *translator) nodeFunc(node *debug.Node) error {
+func (tr *translator) nodeFunc(node *debug.Node) error {
var def string
- for i, ln := range(tr.langs) {
+ for i, ln := range tr.langs {
var s string
ww, err := tr.writersFor(ln)
defer tr.closeWriters(ww)
@@ -126,7 +125,7 @@ func(tr *translator) nodeFunc(node *debug.Node) error {
r, err := tr.rs.GetTemplate(ctx, node.Name)
if err == nil {
logg.TraceCtxf(tr.ctx, "template found", "lang", ln, "node", node.Name)
- for i, v := range(strings.Split(r, "\n")) {
+ for i, v := range strings.Split(r, "\n") {
if i > 0 {
if tr.newline {
s += fmt.Sprintf("\t\"\\n\"\n")
@@ -153,9 +152,9 @@ func(tr *translator) nodeFunc(node *debug.Node) error {
}
// TODO: drop the multiline gen
-func(tr *translator) menuFunc(sym string) error {
+func (tr *translator) menuFunc(sym string) error {
var def string
- for i, ln := range(tr.langs) {
+ for i, ln := range tr.langs {
var s string
ww, err := tr.writersFor(ln)
defer tr.closeWriters(ww)
@@ -166,7 +165,7 @@ func(tr *translator) menuFunc(sym string) error {
r, err := tr.rs.GetMenu(ctx, sym)
if err == nil {
logg.TraceCtxf(tr.ctx, "menu found", "lang", ln, "menu", sym)
- for i, v := range(strings.Split(r, "\n")) {
+ for i, v := range strings.Split(r, "\n") {
if i > 0 {
if tr.newline {
s += fmt.Sprintf("\t\"\\n\"\n")
@@ -192,7 +191,7 @@ func(tr *translator) menuFunc(sym string) error {
return nil
}
-func(tr *translator) AddLang(ln lang.Language) error {
+func (tr *translator) AddLang(ln lang.Language) error {
var err error
tr.langs = append(tr.langs, ln)
return err
@@ -202,7 +201,7 @@ type langVar struct {
v []lang.Language
}
-func(lv *langVar) Set(s string) error {
+func (lv *langVar) Set(s string) error {
v, err := lang.LanguageFromCode(s)
if err != nil {
return err
@@ -211,15 +210,15 @@ func(lv *langVar) Set(s string) error {
return err
}
-func(lv *langVar) String() string {
+func (lv *langVar) String() string {
var s []string
- for _, v := range(lv.v) {
+ for _, v := range lv.v {
s = append(s, v.Code)
}
return strings.Join(s, ",")
}
-func(lv *langVar) Langs() []lang.Language {
+func (lv *langVar) Langs() []lang.Language {
return lv.v
}
@@ -256,7 +255,7 @@ func main() {
rs := resource.NewDbResource(rsStore)
tr := newTranslator(ctx, rs, outDir, newline)
- for _, ln := range(langs.Langs()) {
+ for _, ln := range langs.Langs() {
logg.DebugCtxf(ctx, "lang", "lang", ln)
err = tr.AddLang(ln)
if err != nil {
@@ -271,8 +270,8 @@ func main() {
fmt.Fprintf(os.Stderr, "node tree process fail: %v", err)
os.Exit(1)
}
-
- for k, v := range(debug.NodeIndex) {
+
+ for k, v := range debug.NodeIndex {
err = tr.nodeFunc(&v)
if err != nil {
fmt.Fprintf(os.Stderr, "translate process error for node %s: %v", k, err)
@@ -280,7 +279,7 @@ func main() {
}
}
- for k, _ := range(debug.MenuIndex) {
+ for k, _ := range debug.MenuIndex {
logg.Tracef("processing menu", "sym", k)
err = tr.menuFunc(k)
if err != nil {
diff --git a/dev/interactive/main.go b/dev/interactive/main.go
@@ -6,11 +6,11 @@ import (
"fmt"
"os"
+ "git.defalsify.org/vise.git/db"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/persist"
"git.defalsify.org/vise.git/resource"
- "git.defalsify.org/vise.git/db"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
func main() {
@@ -32,7 +32,7 @@ func main() {
ctx := context.Background()
cfg := engine.Config{
OutputSize: uint32(size),
- SessionId: sessionId,
+ SessionId: sessionId,
}
rsStore := fsdb.NewFsDb()
diff --git a/engine/config.go b/engine/config.go
@@ -27,6 +27,6 @@ type Config struct {
}
// String implements the string interface.
-func(c Config) String() string {
+func (c Config) String() string {
return fmt.Sprintf("sessionid '%s', rootpath '%s', flagcount %d, language '%s'", c.SessionId, c.Root, c.FlagCount, c.Language)
}
diff --git a/engine/db.go b/engine/db.go
@@ -10,8 +10,8 @@ import (
"git.defalsify.org/vise.git/cache"
"git.defalsify.org/vise.git/persist"
- "git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/render"
+ "git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
"git.defalsify.org/vise.git/vm"
)
@@ -21,28 +21,28 @@ var (
)
type DefaultEngine struct {
- st *state.State
- ca cache.Memory
- vm *vm.Vm
- rs resource.Resource
- pe *persist.Persister
- cfg Config
- dbg Debug
- first resource.EntryFunc
- initd bool
- exit string
- exiting bool
- execd bool
+ st *state.State
+ ca cache.Memory
+ vm *vm.Vm
+ rs resource.Resource
+ pe *persist.Persister
+ cfg Config
+ dbg Debug
+ first resource.EntryFunc
+ initd bool
+ exit string
+ exiting bool
+ execd bool
regexCount int
}
// NewEngine instantiates the default Engine implementation.
func NewEngine(cfg Config, rs resource.Resource) *DefaultEngine {
if rs == nil {
- panic("resource cannot be nil")
+ panic("resource cannot be nil")
}
en := &DefaultEngine{
- rs: rs,
+ rs: rs,
cfg: cfg,
}
if en.cfg.Root == "" {
@@ -58,7 +58,7 @@ func NewEngine(cfg Config, rs resource.Resource) *DefaultEngine {
//
// Note that engine.Init will fail if state is set both explicitly
// and in a provided persist.Persister.
-func(en *DefaultEngine) WithState(st *state.State) *DefaultEngine {
+func (en *DefaultEngine) WithState(st *state.State) *DefaultEngine {
if en.st != nil {
panic("state already set")
}
@@ -76,7 +76,7 @@ func(en *DefaultEngine) WithState(st *state.State) *DefaultEngine {
//
// Note that engine.Init will fail if memory is set both explicitly
// and in a provided persist.Persister.
-func(en *DefaultEngine) WithMemory(ca cache.Memory) *DefaultEngine {
+func (en *DefaultEngine) WithMemory(ca cache.Memory) *DefaultEngine {
if en.ca != nil {
panic("cache already set")
}
@@ -90,21 +90,21 @@ func(en *DefaultEngine) WithMemory(ca cache.Memory) *DefaultEngine {
// WithPersister is a chainable method that sets the persister to use with the engine.
//
// If the persister is missing state, memory or both, it will inherit them from the engine.
-func(en *DefaultEngine) WithPersister(pe *persist.Persister) *DefaultEngine {
+func (en *DefaultEngine) WithPersister(pe *persist.Persister) *DefaultEngine {
if en.pe != nil {
panic("persister already set")
}
if pe == nil {
panic("persister argument is nil")
}
- en.pe = pe
+ en.pe = pe
return en
}
// WithDebug is a chainable method that sets the debugger to use for the engine.
//
// If the argument is nil, the default debugger will be used.
-func(en *DefaultEngine) WithDebug(dbg Debug) *DefaultEngine {
+func (en *DefaultEngine) WithDebug(dbg Debug) *DefaultEngine {
if en.dbg != nil {
panic("debugger already set")
}
@@ -120,7 +120,7 @@ func(en *DefaultEngine) WithDebug(dbg Debug) *DefaultEngine {
// control is handed over to the VM bytecode from the current state.
//
// If this function returns an error, execution will be aborted in engine.Init.
-func(en *DefaultEngine) WithFirst(fn resource.EntryFunc) *DefaultEngine {
+func (en *DefaultEngine) WithFirst(fn resource.EntryFunc) *DefaultEngine {
if en.first != nil {
panic("firstfunc already set")
}
@@ -135,19 +135,19 @@ func(en *DefaultEngine) WithFirst(fn resource.EntryFunc) *DefaultEngine {
//
// The added regular expression will be evaluated after the builtin match (see
// vm/input.go for the actual string details).
-//
+//
// The function may be called more than once. Input will be validated against each
// in the sequence they were added.
//
// When a match is found, remaining regular expressions will be skipped.
-func(en *DefaultEngine) AddValidInput(re string) error {
+func (en *DefaultEngine) AddValidInput(re string) error {
err := vm.RegisterInputValidator(en.regexCount, re)
en.regexCount += 1
return err
}
// ensure state is present in engine.
-func(en *DefaultEngine) ensureState() {
+func (en *DefaultEngine) ensureState() {
if en.st == nil {
st := state.NewState(en.cfg.FlagCount)
en.st = st
@@ -157,19 +157,19 @@ func(en *DefaultEngine) ensureState() {
}
logg.Debugf("new engine state added", "state", en.st)
} else {
- if (en.cfg.Language != "") {
+ if en.cfg.Language != "" {
if en.st.Language == nil {
en.st.SetLanguage(en.cfg.Language)
en.st.SetFlag(state.FLAG_LANG)
} else {
- logg.Warnf("language '%s'set in config, but will be ignored because state language has already been set.", )
+ logg.Warnf("language '%s'set in config, but will be ignored because state language has already been set.")
}
}
}
}
// ensure memory is present in engine.
-func(en *DefaultEngine) ensureMemory() error {
+func (en *DefaultEngine) ensureMemory() error {
cac, ok := en.ca.(*cache.Cache)
if cac == nil {
ca := cache.NewCache()
@@ -186,7 +186,7 @@ func(en *DefaultEngine) ensureMemory() error {
}
// retrieve state and memory from perister if present.
-func(en *DefaultEngine) preparePersist() error {
+func (en *DefaultEngine) preparePersist() error {
if en.pe == nil {
return nil
}
@@ -222,7 +222,7 @@ func(en *DefaultEngine) preparePersist() error {
}
// synchronize state and memory between engine and persister.
-func(en *DefaultEngine) ensurePersist() error {
+func (en *DefaultEngine) ensurePersist() error {
if en.pe == nil {
return nil
}
@@ -263,7 +263,7 @@ func(en *DefaultEngine) ensurePersist() error {
}
// create vm instance.
-func(en *DefaultEngine) setupVm() {
+func (en *DefaultEngine) setupVm() {
var szr *render.Sizer
if en.cfg.OutputSize > 0 {
szr = render.NewSizer(en.cfg.OutputSize)
@@ -274,7 +274,7 @@ func(en *DefaultEngine) setupVm() {
}
}
-func(en *DefaultEngine) empty(ctx context.Context) error {
+func (en *DefaultEngine) empty(ctx context.Context) error {
var err error
b := bytes.NewBuffer(nil)
_, err = en.Flush(ctx, b)
@@ -287,7 +287,7 @@ func(en *DefaultEngine) empty(ctx context.Context) error {
}
// prepare engine for Init run.
-func(en *DefaultEngine) prepare(ctx context.Context) error {
+func (en *DefaultEngine) prepare(ctx context.Context) error {
if en.execd {
err := en.empty(ctx)
if err != nil {
@@ -318,7 +318,7 @@ func(en *DefaultEngine) prepare(ctx context.Context) error {
}
// execute the first function, if set.
-func(en *DefaultEngine) runFirst(ctx context.Context) (bool, error) {
+func (en *DefaultEngine) runFirst(ctx context.Context) (bool, error) {
var err error
var r bool
if en.first == nil {
@@ -365,9 +365,9 @@ func(en *DefaultEngine) runFirst(ctx context.Context) (bool, error) {
// If persister is set, this call will save the state and memory.
//
// An error will be logged and returned if:
-// * persistence was attempted and failed (takes precedence)
-// * resource backend did not close cleanly.
-func(en *DefaultEngine) Finish(ctx context.Context) error {
+// - persistence was attempted and failed (takes precedence)
+// - resource backend did not close cleanly.
+func (en *DefaultEngine) Finish(ctx context.Context) error {
var perr error
if !en.initd {
return nil
@@ -381,7 +381,7 @@ func(en *DefaultEngine) Finish(ctx context.Context) error {
}
if perr != nil {
logg.Errorf("persistence failed!", "err", perr)
- err = perr
+ err = perr
}
if err == nil {
logg.Tracef("that's a wrap", "engine", en)
@@ -389,9 +389,9 @@ func(en *DefaultEngine) Finish(ctx context.Context) error {
return err
}
-func(en *DefaultEngine) setCode(ctx context.Context, code []byte) (bool, error) {
+func (en *DefaultEngine) setCode(ctx context.Context, code []byte) (bool, error) {
var err error
-
+
cont := true
en.st.SetCode(code)
if len(code) == 0 {
@@ -409,7 +409,7 @@ func(en *DefaultEngine) setCode(ctx context.Context, code []byte) (bool, error)
// Init implements the Engine interface.
//
// It loads and executes code for the start node.
-func(en *DefaultEngine) init(ctx context.Context, input []byte) (bool, error) {
+func (en *DefaultEngine) init(ctx context.Context, input []byte) (bool, error) {
cont := true
err := en.prepare(ctx)
if err != nil {
@@ -425,7 +425,7 @@ func(en *DefaultEngine) init(ctx context.Context, input []byte) (bool, error) {
logg.DebugCtxf(ctx, "already initialized")
return true, nil
}
-
+
sym := en.cfg.Root
if sym == "" {
return false, fmt.Errorf("start sym empty")
@@ -466,13 +466,13 @@ func(en *DefaultEngine) init(ctx context.Context, input []byte) (bool, error) {
// It processes user input against the current state of the virtual machine environment.
//
// If successfully executed, output of the last execution is available using the Flush call.
-//
+//
// A bool return valus of false indicates that execution should be terminated. Calling Exec again has undefined effects.
//
// Fails if:
-// * input is formally invalid (too long etc)
-// * no current bytecode is available
-// * input processing against bytcode failed
+// - input is formally invalid (too long etc)
+// - no current bytecode is available
+// - input processing against bytcode failed
func (en *DefaultEngine) Exec(ctx context.Context, input []byte) (bool, error) {
var err error
@@ -506,7 +506,7 @@ func (en *DefaultEngine) Exec(ctx context.Context, input []byte) (bool, error) {
}
// backend for Exec, after the input validity check
-func(en *DefaultEngine) exec(ctx context.Context, input []byte) (bool, error) {
+func (en *DefaultEngine) exec(ctx context.Context, input []byte) (bool, error) {
logg.InfoCtxf(ctx, "new VM execution with input", "input", string(input))
code, err := en.st.GetCode()
if err != nil {
@@ -543,10 +543,10 @@ func(en *DefaultEngine) exec(ctx context.Context, input []byte) (bool, error) {
// The method writes the output of the last vm execution to the given writer.
//
// Fails if
-// * required data inputs to the template are not available.
-// * the template for the given node point is note available for retrieval using the resource.Resource implementer.
-// * the supplied writer fails to process the writes.
-func(en *DefaultEngine) Flush(ctx context.Context, w io.Writer) (int, error) {
+// - required data inputs to the template are not available.
+// - the template for the given node point is note available for retrieval using the resource.Resource implementer.
+// - the supplied writer fails to process the writes.
+func (en *DefaultEngine) Flush(ctx context.Context, w io.Writer) (int, error) {
var l int
if !en.execd {
return 0, ErrFlushNoExec
@@ -585,7 +585,7 @@ func(en *DefaultEngine) Flush(ctx context.Context, w io.Writer) (int, error) {
}
// start execution over at top node while keeping current state of client error flags.
-func(en *DefaultEngine) reset(ctx context.Context) (bool, error) {
+func (en *DefaultEngine) reset(ctx context.Context) (bool, error) {
var err error
var isTop bool
for !isTop {
@@ -604,4 +604,3 @@ func(en *DefaultEngine) reset(ctx context.Context) (bool, error) {
en.st.ResetFlag(state.FLAG_DIRTY)
return false, nil
}
-
diff --git a/engine/db_test.go b/engine/db_test.go
@@ -9,12 +9,12 @@ import (
"strings"
"testing"
- "git.defalsify.org/vise.git/resource"
+ "git.defalsify.org/vise.git/cache"
+ memdb "git.defalsify.org/vise.git/db/mem"
"git.defalsify.org/vise.git/persist"
+ "git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
- "git.defalsify.org/vise.git/cache"
"git.defalsify.org/vise.git/vm"
- memdb "git.defalsify.org/vise.git/db/mem"
)
func getNull() io.WriteCloser {
@@ -29,17 +29,17 @@ func codeGet(ctx context.Context, s string) ([]byte, error) {
var b []byte
var err error
switch s {
- case "root":
- b = vm.NewLine(nil, vm.HALT, nil, nil, nil)
- b = vm.NewLine(b, vm.LOAD, []string{"foo"}, []byte{0x0}, nil)
- case "tinkywinky":
- b = vm.NewLine(nil, vm.MOVE, []string{"dipsy"}, nil, nil)
- b = vm.NewLine(b, vm.LOAD, []string{"foo"}, []byte{0x0}, nil)
- case "dipsy":
- b = vm.NewLine(nil, vm.HALT, nil, nil, nil)
- b = vm.NewLine(b, vm.LOAD, []string{"foo"}, []byte{0x0}, nil)
- default:
- err = fmt.Errorf("unknown code symbol '%s'", s)
+ case "root":
+ b = vm.NewLine(nil, vm.HALT, nil, nil, nil)
+ b = vm.NewLine(b, vm.LOAD, []string{"foo"}, []byte{0x0}, nil)
+ case "tinkywinky":
+ b = vm.NewLine(nil, vm.MOVE, []string{"dipsy"}, nil, nil)
+ b = vm.NewLine(b, vm.LOAD, []string{"foo"}, []byte{0x0}, nil)
+ case "dipsy":
+ b = vm.NewLine(nil, vm.HALT, nil, nil, nil)
+ b = vm.NewLine(b, vm.LOAD, []string{"foo"}, []byte{0x0}, nil)
+ default:
+ err = fmt.Errorf("unknown code symbol '%s'", s)
}
return b, err
}
@@ -137,7 +137,6 @@ func TestDbEngineStateDup(t *testing.T) {
en.WithState(st)
}
-
func TestDbEngineCacheDup(t *testing.T) {
cfg := Config{}
rs := resource.NewMenuResource()
@@ -241,7 +240,7 @@ func TestDbEnginePersist(t *testing.T) {
t.Fatal(err)
}
- _, err = en.Flush(ctx, nul)
+ _, err = en.Flush(ctx, nul)
if err != nil {
t.Fatal(err)
}
@@ -268,7 +267,7 @@ func TestDbEngineDebug(t *testing.T) {
w := bytes.NewBuffer(nil)
ctx := context.Background()
cfg := Config{
- Root: "tinkywinky",
+ Root: "tinkywinky",
FlagCount: 1,
}
rs := resource.NewMenuResource()
@@ -403,4 +402,3 @@ func TestDbFirst(t *testing.T) {
t.Fatal("expected flag set")
}
}
-
diff --git a/engine/debug.go b/engine/debug.go
@@ -18,27 +18,27 @@ type Debug interface {
// SimpleDebug is a vanilla implementation of the Debug interface.
type SimpleDebug struct {
pfx string
- w io.Writer
+ w io.Writer
}
// NewSimpleDebug instantiates a new SimpleDebug object.
func NewSimpleDebug(w io.Writer) Debug {
if w == nil {
- w = os.Stderr
- }
+ w = os.Stderr
+ }
return &SimpleDebug{
- w: w,
+ w: w,
pfx: "DUMP>",
}
}
// Break implements the Debug interface.
-func (dbg* SimpleDebug) Break(st *state.State, ca cache.Memory) {
+func (dbg *SimpleDebug) Break(st *state.State, ca cache.Memory) {
fmt.Fprintf(dbg.w, "%s State:\n", dbg.pfx)
node, lvl := st.Where()
fmt.Fprintf(dbg.w, "%s\tPath: %s (%d)\n", dbg.pfx, node, lvl)
fmt.Fprintf(dbg.w, "%s\tFlags:\n", dbg.pfx)
- for _, s := range state.FlagDebugger.AsList(st.Flags, st.BitSize - 8) {
+ for _, s := range state.FlagDebugger.AsList(st.Flags, st.BitSize-8) {
fmt.Fprintf(dbg.w, "%s\t\t%s\n", dbg.pfx, s)
}
for i := uint32(0); i < ca.Levels(); i++ {
diff --git a/engine/engine_test.go b/engine/engine_test.go
@@ -4,24 +4,25 @@ import (
"bytes"
"context"
"fmt"
-// "io/ioutil"
+
+ // "io/ioutil"
"log"
-// "path"
+ // "path"
"testing"
"git.defalsify.org/vise.git/cache"
+ "git.defalsify.org/vise.git/db"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/lang"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
"git.defalsify.org/vise.git/testdata"
"git.defalsify.org/vise.git/vm"
- "git.defalsify.org/vise.git/db"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
var (
- dataGenerated bool = false
- dataDir string = testdata.DataDir
+ dataGenerated bool = false
+ dataDir string = testdata.DataDir
)
type testWrapper struct {
@@ -33,11 +34,11 @@ type testWrapper struct {
func newTestWrapper(path string, st *state.State) testWrapper {
ctx := context.Background()
store := fsdb.NewFsDb()
- store.Connect(ctx, path)
+ store.Connect(ctx, path)
rs := resource.NewDbResource(store)
rs.With(db.DATATYPE_STATICLOAD)
- wr := testWrapper {
- rs,
+ wr := testWrapper{
+ rs,
st,
store,
}
@@ -50,30 +51,30 @@ func newTestWrapper(path string, st *state.State) testWrapper {
return wr
}
-func(fs testWrapper) getStore() db.Db {
+func (fs testWrapper) getStore() db.Db {
return fs.db
}
-func(fs testWrapper) one(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (fs testWrapper) one(ctx context.Context, sym string, input []byte) (resource.Result, error) {
return resource.Result{
Content: "one",
}, nil
}
-func(fs testWrapper) inky(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (fs testWrapper) inky(ctx context.Context, sym string, input []byte) (resource.Result, error) {
return resource.Result{
Content: "tinkywinky",
}, nil
}
-func(fs testWrapper) pinky(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (fs testWrapper) pinky(ctx context.Context, sym string, input []byte) (resource.Result, error) {
r := fmt.Sprintf("xyzzy: %x", input)
return resource.Result{
Content: r,
}, nil
}
-func(fs testWrapper) translate(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (fs testWrapper) translate(ctx context.Context, sym string, input []byte) (resource.Result, error) {
r := "cool"
v := ctx.Value("Language")
code := ""
@@ -89,7 +90,7 @@ func(fs testWrapper) translate(ctx context.Context, sym string, input []byte) (r
}, nil
}
-func(fs testWrapper) set_lang(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (fs testWrapper) set_lang(ctx context.Context, sym string, input []byte) (resource.Result, error) {
return resource.Result{
Content: string(input),
FlagSet: []uint32{state.FLAG_LANG},
@@ -191,7 +192,7 @@ func TestEngineExecInvalidInput(t *testing.T) {
cfg := Config{
Root: "root",
- }
+ }
en := NewEngine(cfg, &rs)
en = en.WithState(st)
en = en.WithMemory(ca)
@@ -213,7 +214,7 @@ func TestEngineResumeTerminated(t *testing.T) {
st := state.NewState(17)
rs := newTestWrapper(dataDir, st)
ca := cache.NewCache().WithCacheSize(1024)
-
+
cfg := Config{
Root: "root",
}
@@ -284,7 +285,6 @@ func TestLanguageSet(t *testing.T) {
t.Fatalf("expected 'cool', got '%s'", r)
}
-
b = vm.NewLine(nil, vm.RELOAD, []string{"translate"}, nil, nil)
b = vm.NewLine(b, vm.MOVE, []string{"."}, nil, nil)
st.SetCode(b)
@@ -331,7 +331,7 @@ func TestLanguageRender(t *testing.T) {
if err != nil {
t.Fatal(err)
}
-
+
br := bytes.NewBuffer(nil)
_, err = en.Flush(ctx, br)
if err != nil {
@@ -353,7 +353,7 @@ func TestConfigLanguageRender(t *testing.T) {
ca := cache.NewCache()
cfg := Config{
- Root: "root",
+ Root: "root",
Language: "nor",
}
en := NewEngine(cfg, &rs)
@@ -380,7 +380,7 @@ func TestConfigLanguageRender(t *testing.T) {
if err != nil {
t.Fatal(err)
}
-
+
expect := `dette endrer med språket tinkywinky
0:tilbake`
r := br.String()
diff --git a/engine/loop_test.go b/engine/loop_test.go
@@ -37,7 +37,7 @@ func TestLoopTop(t *testing.T) {
"2",
"j",
"1",
- }
+ }
inputStr := strings.Join(input, "\n")
inputBuf := bytes.NewBuffer(append([]byte(inputStr), 0x0a))
outputBuf := bytes.NewBuffer(nil)
@@ -59,9 +59,9 @@ func TestLoopBackForth(t *testing.T) {
ctx := context.Background()
st := state.NewState(0)
rs := newTestWrapper(dataDir, st)
-
+
cfg := Config{
- Root: "root",
+ Root: "root",
CacheSize: 1024,
}
en := NewEngine(cfg, rs)
@@ -78,7 +78,7 @@ func TestLoopBackForth(t *testing.T) {
"0",
"1",
"0",
- }
+ }
inputStr := strings.Join(input, "\n")
inputBuf := bytes.NewBuffer(append([]byte(inputStr), 0x0a))
outputBuf := bytes.NewBuffer(nil)
@@ -99,8 +99,8 @@ func TestLoopBrowse(t *testing.T) {
cfg := Config{
OutputSize: 68,
- Root: "root",
- CacheSize: 1024,
+ Root: "root",
+ CacheSize: 1024,
}
en := NewEngine(cfg, rs)
en = en.WithState(st)
@@ -115,7 +115,7 @@ func TestLoopBrowse(t *testing.T) {
"00",
"11",
"00",
- }
+ }
inputStr := strings.Join(input, "\n")
inputBuf := bytes.NewBuffer(append([]byte(inputStr), 0x0a))
outputBuf := bytes.NewBuffer(nil)
diff --git a/engine/persist_test.go b/engine/persist_test.go
@@ -6,12 +6,11 @@ import (
"testing"
"git.defalsify.org/vise.git/cache"
+ memdb "git.defalsify.org/vise.git/db/mem"
"git.defalsify.org/vise.git/persist"
"git.defalsify.org/vise.git/state"
- memdb "git.defalsify.org/vise.git/db/mem"
)
-
func TestPersistNewAcrossEngine(t *testing.T) {
var err error
var cfg Config
@@ -72,7 +71,7 @@ func TestPersistNewAcrossEngine(t *testing.T) {
}
location, _ := st.Where()
if location != "foo" {
- t.Errorf("expected location 'foo', got '%s", location)
+ t.Errorf("expected location 'foo', got '%s", location)
}
}
@@ -136,6 +135,6 @@ func TestPersistSameAcrossEngine(t *testing.T) {
}
location, _ := st.Where()
if location != "foo" {
- t.Errorf("expected location 'foo', got '%s", location)
+ t.Errorf("expected location 'foo', got '%s", location)
}
}
diff --git a/examples/db/main.go b/examples/db/main.go
@@ -13,21 +13,21 @@ import (
testdataloader "github.com/peteole/testdata-loader"
"git.defalsify.org/vise.git/asm"
+ "git.defalsify.org/vise.git/db"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
+ "git.defalsify.org/vise.git/logging"
"git.defalsify.org/vise.git/persist"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
- "git.defalsify.org/vise.git/db"
- fsdb "git.defalsify.org/vise.git/db/fs"
- "git.defalsify.org/vise.git/logging"
)
var (
- logg = logging.NewVanilla()
- baseDir = testdataloader.GetBasePath()
- scriptDir = path.Join(baseDir, "examples", "db")
- store = fsdb.NewFsDb()
- pr = persist.NewPersister(store)
+ logg = logging.NewVanilla()
+ baseDir = testdataloader.GetBasePath()
+ scriptDir = path.Join(baseDir, "examples", "db")
+ store = fsdb.NewFsDb()
+ pr = persist.NewPersister(store)
data_selector = []byte("my_data")
)
@@ -109,7 +109,7 @@ func main() {
panic(err)
}
store.SetSession("xyzzy")
- store.SetLock(db.DATATYPE_TEMPLATE | db.DATATYPE_MENU | db.DATATYPE_BIN, false)
+ store.SetLock(db.DATATYPE_TEMPLATE|db.DATATYPE_MENU|db.DATATYPE_BIN, false)
err = genCode(ctx, store)
if err != nil {
panic(err)
@@ -124,7 +124,7 @@ func main() {
if err != nil {
panic(err)
}
- store.SetLock(db.DATATYPE_TEMPLATE | db.DATATYPE_MENU | db.DATATYPE_BIN, true)
+ store.SetLock(db.DATATYPE_TEMPLATE|db.DATATYPE_MENU|db.DATATYPE_BIN, true)
tg := resource.NewDbResource(store)
rs := resource.NewMenuResource()
@@ -134,7 +134,7 @@ func main() {
rs.AddLocalFunc("say", say)
cfg := engine.Config{
- Root: "root",
+ Root: "root",
FlagCount: 1,
}
diff --git a/examples/first/main.go b/examples/first/main.go
@@ -3,24 +3,24 @@ package main
import (
"context"
+ "crypto/rand"
+ "crypto/sha256"
"encoding/hex"
"errors"
"flag"
"fmt"
"os"
"path"
- "crypto/rand"
- "crypto/sha256"
testdataloader "github.com/peteole/testdata-loader"
"git.defalsify.org/vise.git/db"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
+ "git.defalsify.org/vise.git/logging"
"git.defalsify.org/vise.git/persist"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
- "git.defalsify.org/vise.git/logging"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
const (
@@ -30,19 +30,19 @@ const (
)
var (
- logg = logging.NewVanilla()
- baseDir = testdataloader.GetBasePath()
- scriptDir = path.Join(baseDir, "examples", "first")
- storeDir = path.Join(scriptDir, ".state")
+ logg = logging.NewVanilla()
+ baseDir = testdataloader.GetBasePath()
+ scriptDir = path.Join(baseDir, "examples", "first")
+ storeDir = path.Join(scriptDir, ".state")
authStoreDir = path.Join(scriptDir, ".auth")
)
type firstAuthResource struct {
- st *state.State
+ st *state.State
store db.Db
}
-func(f *firstAuthResource) challenge(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (f *firstAuthResource) challenge(ctx context.Context, sym string, input []byte) (resource.Result, error) {
var err error
var r resource.Result
@@ -62,7 +62,7 @@ func(f *firstAuthResource) challenge(ctx context.Context, sym string, input []by
succeed := f.st.GetFlag(USER_SUCCEEDED)
failed := f.st.GetFlag(USER_FAILED)
if succeed {
- return r, nil
+ return r, nil
} else {
if failed {
r.FlagReset = append(r.FlagReset, USER_FAILED)
@@ -106,7 +106,7 @@ func(f *firstAuthResource) challenge(ctx context.Context, sym string, input []by
}
return r, nil
}
-
+
func main() {
var cont bool
var sessionId string
@@ -141,12 +141,12 @@ func main() {
rs := resource.NewDbResource(store)
cfg := engine.Config{
- Root: "root",
+ Root: "root",
SessionId: sessionId,
}
aux := &firstAuthResource{
- st: st,
+ st: st,
store: authStore,
}
diff --git a/examples/gdbm/main.go b/examples/gdbm/main.go
@@ -9,17 +9,17 @@ import (
testdataloader "github.com/peteole/testdata-loader"
- "git.defalsify.org/vise.git/engine"
- "git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/db"
- gdbmdb "git.defalsify.org/vise.git/db/gdbm"
fsdb "git.defalsify.org/vise.git/db/fs"
+ gdbmdb "git.defalsify.org/vise.git/db/gdbm"
+ "git.defalsify.org/vise.git/engine"
+ "git.defalsify.org/vise.git/resource"
)
var (
- baseDir = testdataloader.GetBasePath()
+ baseDir = testdataloader.GetBasePath()
scriptDir = path.Join(baseDir, "examples", "gdbm")
- dbFile = path.Join(scriptDir, "vise.gdbm")
+ dbFile = path.Join(scriptDir, "vise.gdbm")
)
func do(ctx context.Context, sym string, input []byte) (resource.Result, error) {
@@ -27,7 +27,7 @@ func do(ctx context.Context, sym string, input []byte) (resource.Result, error)
Content: "bye",
}, nil
}
-
+
func main() {
ctx := context.Background()
root := "root"
@@ -54,7 +54,7 @@ func main() {
rs.WithEntryFuncGetter(rsf.FuncFor)
cfg := engine.Config{
- Root: "root",
+ Root: "root",
Language: "nor",
}
en := engine.NewEngine(cfg, rs)
diff --git a/examples/http/main.go b/examples/http/main.go
@@ -10,11 +10,11 @@ import (
"os"
"path"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
+ "git.defalsify.org/vise.git/logging"
"git.defalsify.org/vise.git/persist"
"git.defalsify.org/vise.git/resource"
- "git.defalsify.org/vise.git/logging"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
var (
@@ -23,7 +23,7 @@ var (
type LocalHandler struct {
sessionId string
-}
+}
func NewLocalHandler() *LocalHandler {
return &LocalHandler{
@@ -31,11 +31,11 @@ func NewLocalHandler() *LocalHandler {
}
}
-func(h* LocalHandler) SetSession(sessionId string) {
+func (h *LocalHandler) SetSession(sessionId string) {
h.sessionId = sessionId
}
-func(h* LocalHandler) AddSession(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (h *LocalHandler) AddSession(ctx context.Context, sym string, input []byte) (resource.Result, error) {
return resource.Result{
Content: h.sessionId + ":" + string(input),
}, nil
@@ -49,7 +49,7 @@ type RequestParser interface {
type DefaultRequestParser struct {
}
-func(rp *DefaultRequestParser) GetSessionId(rq *http.Request) (string, error) {
+func (rp *DefaultRequestParser) GetSessionId(rq *http.Request) (string, error) {
v := rq.Header.Get("X-Vise-Session")
if v == "" {
return "", fmt.Errorf("no session found")
@@ -57,7 +57,7 @@ func(rp *DefaultRequestParser) GetSessionId(rq *http.Request) (string, error) {
return v, nil
}
-func(rp *DefaultRequestParser) GetInput(rq *http.Request) ([]byte, error) {
+func (rp *DefaultRequestParser) GetInput(rq *http.Request) ([]byte, error) {
defer rq.Body.Close()
v, err := ioutil.ReadAll(rq.Body)
if err != nil {
@@ -68,10 +68,10 @@ func(rp *DefaultRequestParser) GetInput(rq *http.Request) ([]byte, error) {
type DefaultSessionHandler struct {
cfgTemplate engine.Config
- rp RequestParser
- rs resource.Resource
- rh *LocalHandler
- peBase string
+ rp RequestParser
+ rs resource.Resource
+ rh *LocalHandler
+ peBase string
}
func NewDefaultSessionHandler(ctx context.Context, persistBase string, resourceBase string, rp RequestParser, outputSize uint32, cacheSize uint32, flagCount uint32) *DefaultSessionHandler {
@@ -86,9 +86,9 @@ func NewDefaultSessionHandler(ctx context.Context, persistBase string, resourceB
return &DefaultSessionHandler{
cfgTemplate: engine.Config{
OutputSize: outputSize,
- Root: "root",
- FlagCount: flagCount,
- CacheSize: cacheSize,
+ Root: "root",
+ FlagCount: flagCount,
+ CacheSize: cacheSize,
},
rs: rs,
rh: rh,
@@ -96,10 +96,10 @@ func NewDefaultSessionHandler(ctx context.Context, persistBase string, resourceB
}
}
-func(f *DefaultSessionHandler) GetEngine(ctx context.Context, sessionId string) (engine.Engine, error) {
+func (f *DefaultSessionHandler) GetEngine(ctx context.Context, sessionId string) (engine.Engine, error) {
cfg := f.cfgTemplate
cfg.SessionId = sessionId
-
+
//persistPath := path.Join(f.peBase, sessionId)
persistPath := path.Join(f.peBase)
if persistPath == "" {
@@ -120,8 +120,8 @@ func(f *DefaultSessionHandler) GetEngine(ctx context.Context, sessionId string)
return en, err
}
-func(f *DefaultSessionHandler) writeError(w http.ResponseWriter, code int, msg string, err error) {
- w.Header().Set("X-Vise", msg + ": " + err.Error())
+func (f *DefaultSessionHandler) writeError(w http.ResponseWriter, code int, msg string, err error) {
+ w.Header().Set("X-Vise", msg+": "+err.Error())
w.Header().Set("Content-Length", "0")
w.WriteHeader(code)
_, err = w.Write([]byte{})
@@ -129,10 +129,10 @@ func(f *DefaultSessionHandler) writeError(w http.ResponseWriter, code int, msg s
w.WriteHeader(500)
w.Header().Set("X-Vise", err.Error())
}
- return
+ return
}
-func(f *DefaultSessionHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
+func (f *DefaultSessionHandler) ServeHTTP(w http.ResponseWriter, req *http.Request) {
var r bool
sessionId, err := f.rp.GetSessionId(req)
if err != nil {
@@ -188,7 +188,7 @@ func main() {
flag.StringVar(&port, "p", "7123", "http port")
flag.StringVar(&peDir, "d", ".state", "persistance dir")
flag.UintVar(&flagCount, "f", 0, "flag count")
- flag.UintVar(&cacheSize, "c", 1024 * 1024, "cache size")
+ flag.UintVar(&cacheSize, "c", 1024*1024, "cache size")
flag.UintVar(&outSize, "s", 160, "max size of output")
flag.Parse()
fmt.Fprintf(os.Stderr, "starting server:\n\tpersistence dir: %s\n\tresource dir: %s\n", rsDir, peDir)
@@ -197,7 +197,7 @@ func main() {
rp := &DefaultRequestParser{}
h := NewDefaultSessionHandler(ctx, peDir, rsDir, rp, uint32(outSize), uint32(cacheSize), uint32(flagCount))
s := &http.Server{
- Addr: fmt.Sprintf("%s:%s", host, port),
+ Addr: fmt.Sprintf("%s:%s", host, port),
Handler: h,
}
err := s.ListenAndServe()
diff --git a/examples/intro/main.go b/examples/intro/main.go
@@ -12,10 +12,10 @@ import (
testdataloader "github.com/peteole/testdata-loader"
"git.defalsify.org/vise.git/cache"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
const (
@@ -23,7 +23,7 @@ const (
)
var (
- baseDir = testdataloader.GetBasePath()
+ baseDir = testdataloader.GetBasePath()
scriptDir = path.Join(baseDir, "examples", "intro")
)
@@ -35,7 +35,7 @@ type introResource struct {
func newintroResource(ctx context.Context) introResource {
store := fsdb.NewFsDb()
- err := store.Connect(ctx, scriptDir)
+ err := store.Connect(ctx, scriptDir)
if err != nil {
panic(err)
}
@@ -45,7 +45,7 @@ func newintroResource(ctx context.Context) introResource {
// increment counter.
// return a string representing the current value of the counter.
-func(c *introResource) count(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (c *introResource) count(ctx context.Context, sym string, input []byte) (resource.Result, error) {
s := "%v time"
if c.c != 1 {
s += "s"
@@ -53,13 +53,13 @@ func(c *introResource) count(ctx context.Context, sym string, input []byte) (res
r := resource.Result{
Content: fmt.Sprintf(s, c.c),
}
- c.c += 1
- return r, nil
+ c.c += 1
+ return r, nil
}
// if input is suppled, append it to the stored string vector and set the HAVESOMETHING flag.
// return the stored string vector value, one string per line.
-func(c *introResource) something(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (c *introResource) something(ctx context.Context, sym string, input []byte) (resource.Result, error) {
c.v = append(c.v, string(input))
r := resource.Result{
Content: strings.Join(c.v, "\n"),
@@ -81,7 +81,7 @@ func main() {
flag.StringVar(&sessionId, "session-id", "default", "session id")
flag.Parse()
fmt.Fprintf(os.Stderr, "starting session at symbol '%s' using resource dir: %s\n", root, dir)
-
+
ctx := context.Background()
st := state.NewState(3)
rs := newintroResource(ctx)
@@ -89,8 +89,8 @@ func main() {
rs.AddLocalFunc("something", rs.something)
ca := cache.NewCache()
cfg := engine.Config{
- Root: "root",
- SessionId: sessionId,
+ Root: "root",
+ SessionId: sessionId,
OutputSize: uint32(size),
}
en := engine.NewEngine(cfg, rs)
diff --git a/examples/languages/main.go b/examples/languages/main.go
@@ -10,13 +10,13 @@ import (
testdataloader "github.com/peteole/testdata-loader"
gotext "gopkg.in/leonelquinteros/gotext.v1"
+ fsdb "git.defalsify.org/vise.git/db/fs"
+ "git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/lang"
+ "git.defalsify.org/vise.git/logging"
"git.defalsify.org/vise.git/persist"
- "git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
- fsdb "git.defalsify.org/vise.git/db/fs"
- "git.defalsify.org/vise.git/logging"
)
const (
@@ -24,9 +24,9 @@ const (
)
var (
- logg = logging.NewVanilla()
- baseDir = testdataloader.GetBasePath()
- scriptDir = path.Join(baseDir, "examples", "languages")
+ logg = logging.NewVanilla()
+ baseDir = testdataloader.GetBasePath()
+ scriptDir = path.Join(baseDir, "examples", "languages")
translationDir = path.Join(scriptDir, "locale")
)
@@ -42,10 +42,10 @@ func codeFromCtx(ctx context.Context) string {
type langController struct {
translations map[string]gotext.Locale
- State *state.State
+ State *state.State
}
-func(l *langController) lang(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (l *langController) lang(ctx context.Context, sym string, input []byte) (resource.Result, error) {
lang := "nor"
var rs resource.Result
if l.State.MatchFlag(USERFLAG_FLIP, true) {
@@ -61,7 +61,7 @@ func(l *langController) lang(ctx context.Context, sym string, input []byte) (res
func msg(ctx context.Context, sym string, input []byte) (resource.Result, error) {
var r resource.Result
- switch codeFromCtx(ctx) {
+ switch codeFromCtx(ctx) {
case "nor":
r.Content = "Denne meldingen er fra en ekstern funksjon"
default:
@@ -70,11 +70,11 @@ func msg(ctx context.Context, sym string, input []byte) (resource.Result, error)
return r, nil
}
-func(l *langController) moMsg(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (l *langController) moMsg(ctx context.Context, sym string, input []byte) (resource.Result, error) {
var r resource.Result
code := codeFromCtx(ctx)
o := gotext.NewLocale(translationDir, code)
- o.AddDomain("default")
+ o.AddDomain("default")
r.Content = o.Get("This message is translated using gettext")
logg.DebugCtxf(ctx, "lang", "code", code, "translateor", o)
return r, nil
@@ -96,7 +96,7 @@ func main() {
rs := resource.NewDbResource(rsStore)
cfg := engine.Config{
- Root: "root",
+ Root: "root",
SessionId: "default",
}
diff --git a/examples/longmenu/main.go b/examples/longmenu/main.go
@@ -10,12 +10,13 @@ import (
testdataloader "github.com/peteole/testdata-loader"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/resource"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
+
var (
- baseDir = testdataloader.GetBasePath()
+ baseDir = testdataloader.GetBasePath()
scriptDir = path.Join(baseDir, "examples", "longmenu")
)
@@ -33,7 +34,7 @@ func main() {
}
rs := resource.NewDbResource(store)
defer rs.Close(ctx)
- cfg := engine.Config {
+ cfg := engine.Config{
OutputSize: uint32(size),
}
en := engine.NewEngine(cfg, rs)
diff --git a/examples/pincheck/main.go b/examples/pincheck/main.go
@@ -12,11 +12,11 @@ import (
testdataloader "github.com/peteole/testdata-loader"
"git.defalsify.org/vise.git/cache"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
+ "git.defalsify.org/vise.git/logging"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
- "git.defalsify.org/vise.git/logging"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
const (
@@ -25,13 +25,13 @@ const (
)
var (
- logg = logging.NewVanilla()
- baseDir = testdataloader.GetBasePath()
+ logg = logging.NewVanilla()
+ baseDir = testdataloader.GetBasePath()
scriptDir = path.Join(baseDir, "examples", "pincheck")
- pin = []byte("1234")
+ pin = []byte("1234")
)
-type pinResource struct{
+type pinResource struct {
resource.Resource
st *state.State
}
@@ -43,7 +43,7 @@ func newPinResource(resource resource.Resource, state *state.State) *pinResource
}
}
-func(rs *pinResource) pinCheck(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (rs *pinResource) pinCheck(ctx context.Context, sym string, input []byte) (resource.Result, error) {
var r resource.Result
if rs.st.MatchFlag(USERFLAG_QUERYPIN, false) {
@@ -61,7 +61,7 @@ func(rs *pinResource) pinCheck(ctx context.Context, sym string, input []byte) (r
return r, nil
}
-func(rs *pinResource) pinClear(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (rs *pinResource) pinClear(ctx context.Context, sym string, input []byte) (resource.Result, error) {
var r resource.Result
r.FlagReset = []uint32{USERFLAG_VALIDPIN, USERFLAG_QUERYPIN}
return r, nil
@@ -88,7 +88,7 @@ func main() {
rsf.AddLocalFunc("pinclear", rs.pinClear)
ca := cache.NewCache()
cfg := engine.Config{
- Root: "root",
+ Root: "root",
StateDebug: true,
}
en := engine.NewEngine(cfg, rs)
diff --git a/examples/preprocessor/main.go b/examples/preprocessor/main.go
@@ -12,21 +12,20 @@ import (
"git.defalsify.org/vise.git/asm"
"git.defalsify.org/vise.git/cache"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
-
var (
- baseDir = testdataloader.GetBasePath()
+ baseDir = testdataloader.GetBasePath()
scriptDir = path.Join(baseDir, "examples", "preprocessor")
)
type countResource struct {
parser *asm.FlagParser
- count int
+ count int
}
func newCountResource(fp string) (*countResource, error) {
@@ -38,12 +37,12 @@ func newCountResource(fp string) (*countResource, error) {
return nil, err
}
return &countResource{
- count: 0,
+ count: 0,
parser: parser,
}, nil
}
-func(rsc* countResource) poke(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (rsc *countResource) poke(ctx context.Context, sym string, input []byte) (resource.Result, error) {
var r resource.Result
ss := strings.Split(sym, "_")
@@ -58,7 +57,7 @@ func(rsc* countResource) poke(ctx context.Context, sym string, input []byte) (re
r.FlagSet = []uint32{uint32(v)}
s, err := rsc.parser.GetDescription(v)
if err == nil {
- r.Content = s
+ r.Content = s
}
rsc.count++
diff --git a/examples/profile/main.go b/examples/profile/main.go
@@ -13,28 +13,28 @@ import (
testdataloader "github.com/peteole/testdata-loader"
"git.defalsify.org/vise.git/cache"
+ "git.defalsify.org/vise.git/db"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
- "git.defalsify.org/vise.git/db"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
const (
USERFLAG_IDENTIFIED = iota + state.FLAG_USERSTART
- USERFLAG_HAVENAME
+ USERFLAG_HAVENAME
USERFLAG_HAVEEMAIL
)
var (
- baseDir = testdataloader.GetBasePath()
- scriptDir = path.Join(baseDir, "examples", "profile")
+ baseDir = testdataloader.GetBasePath()
+ scriptDir = path.Join(baseDir, "examples", "profile")
emptyResult = resource.Result{}
)
type profileResource struct {
*resource.DbResource
- st *state.State
+ st *state.State
haveEntered bool
}
@@ -46,7 +46,7 @@ func newProfileResource(st *state.State, rs *resource.DbResource) resource.Resou
}
}
-func(pr *profileResource) checkEntry() error {
+func (pr *profileResource) checkEntry() error {
log.Printf("%v %v", USERFLAG_IDENTIFIED, USERFLAG_HAVENAME)
if pr.haveEntered {
return nil
@@ -60,7 +60,7 @@ func(pr *profileResource) checkEntry() error {
return nil
}
-func(pr profileResource) nameSave(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (pr profileResource) nameSave(ctx context.Context, sym string, input []byte) (resource.Result, error) {
log.Printf("writing name to file")
fp := path.Join(scriptDir, "myname.txt")
err := ioutil.WriteFile(fp, input, 0600)
@@ -74,7 +74,7 @@ func(pr profileResource) nameSave(ctx context.Context, sym string, input []byte)
return emptyResult, err
}
-func(pr profileResource) emailSave(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (pr profileResource) emailSave(ctx context.Context, sym string, input []byte) (resource.Result, error) {
log.Printf("writing email to file")
fp := path.Join(scriptDir, "myemail.txt")
err := ioutil.WriteFile(fp, input, 0600)
@@ -116,8 +116,8 @@ func main() {
rs.AddLocalFunc("do_email_save", rs.emailSave)
ca := cache.NewCache()
cfg := engine.Config{
- Root: "root",
- SessionId: sessionId,
+ Root: "root",
+ SessionId: sessionId,
OutputSize: uint32(size),
}
en := engine.NewEngine(cfg, rs)
diff --git a/examples/quit/main.go b/examples/quit/main.go
@@ -9,13 +9,13 @@ import (
testdataloader "github.com/peteole/testdata-loader"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/resource"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
var (
- baseDir = testdataloader.GetBasePath()
+ baseDir = testdataloader.GetBasePath()
scriptDir = path.Join(baseDir, "examples", "quit")
)
diff --git a/examples/reuse/main.go b/examples/reuse/main.go
@@ -9,14 +9,14 @@ import (
testdataloader "github.com/peteole/testdata-loader"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/resource"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
var (
- baseDir = testdataloader.GetBasePath()
- scriptDir = path.Join(baseDir, "examples", "reuse")
+ baseDir = testdataloader.GetBasePath()
+ scriptDir = path.Join(baseDir, "examples", "reuse")
emptyResult = resource.Result{}
)
@@ -37,7 +37,7 @@ func main() {
panic(err)
}
rs := resource.NewDbResource(store)
-
+
rs.AddLocalFunc("do_foo", same)
rs.AddLocalFunc("do_bar", same)
cfg := engine.Config{
diff --git a/examples/session/main.go b/examples/session/main.go
@@ -11,16 +11,16 @@ import (
testdataloader "github.com/peteole/testdata-loader"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
- "git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/logging"
- fsdb "git.defalsify.org/vise.git/db/fs"
+ "git.defalsify.org/vise.git/resource"
)
var (
- logg = logging.NewVanilla()
- baseDir = testdataloader.GetBasePath()
- scriptDir = path.Join(baseDir, "examples", "session")
+ logg = logging.NewVanilla()
+ baseDir = testdataloader.GetBasePath()
+ scriptDir = path.Join(baseDir, "examples", "session")
emptyResult = resource.Result{}
)
@@ -47,7 +47,7 @@ func save(ctx context.Context, sym string, input []byte) (resource.Result, error
}
}
return resource.Result{
- Content: string(r),
+ Content: string(r),
}, nil
}
@@ -70,8 +70,8 @@ func main() {
rs := resource.NewDbResource(store)
rs.AddLocalFunc("do_save", save)
cfg := engine.Config{
- Root: "root",
- SessionId: sessionId,
+ Root: "root",
+ SessionId: sessionId,
OutputSize: uint32(size),
StateDebug: true,
}
diff --git a/examples/state/main.go b/examples/state/main.go
@@ -9,11 +9,11 @@ import (
testdataloader "github.com/peteole/testdata-loader"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
+ "git.defalsify.org/vise.git/logging"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
- "git.defalsify.org/vise.git/logging"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
const (
@@ -23,8 +23,8 @@ const (
)
var (
- logg = logging.NewVanilla()
- baseDir = testdataloader.GetBasePath()
+ logg = logging.NewVanilla()
+ baseDir = testdataloader.GetBasePath()
scriptDir = path.Join(baseDir, "examples", "state")
)
@@ -32,19 +32,18 @@ type flagResource struct {
st *state.State
}
-func(f *flagResource) get(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (f *flagResource) get(ctx context.Context, sym string, input []byte) (resource.Result, error) {
return resource.Result{
Content: state.FlagDebugger.AsString(f.st.Flags, 3),
- }, nil
+ }, nil
}
-
-func(f *flagResource) do(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (f *flagResource) do(ctx context.Context, sym string, input []byte) (resource.Result, error) {
var r resource.Result
logg.DebugCtxf(ctx, "in do", "sym", sym)
- switch(sym) {
+ switch sym {
case "do_foo":
if f.st.MatchFlag(USER_FOO, false) {
r.FlagSet = append(r.FlagSet, USER_FOO)
@@ -66,7 +65,7 @@ func(f *flagResource) do(ctx context.Context, sym string, input []byte) (resourc
}
return r, nil
}
-
+
func main() {
root := "root"
fmt.Fprintf(os.Stderr, "starting session at symbol '%s' using resource dir: %s\n", root, scriptDir)
diff --git a/examples/state_passive/main.go b/examples/state_passive/main.go
@@ -11,12 +11,12 @@ import (
"os"
"path"
- "git.defalsify.org/vise.git/resource"
- "git.defalsify.org/vise.git/state"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
- "git.defalsify.org/vise.git/persist"
"git.defalsify.org/vise.git/logging"
- fsdb "git.defalsify.org/vise.git/db/fs"
+ "git.defalsify.org/vise.git/persist"
+ "git.defalsify.org/vise.git/resource"
+ "git.defalsify.org/vise.git/state"
)
const (
@@ -31,7 +31,7 @@ var (
)
type fsData struct {
- path string
+ path string
persister *persist.Persister
}
@@ -67,7 +67,7 @@ func (fsd *fsData) poke(ctx context.Context, sym string, input []byte) (resource
if st.MatchFlag(v, true) {
logg.DebugCtxf(ctx, "match on flag", "flag", v)
res.FlagReset = append(res.FlagReset, v)
- res.FlagSet = append(res.FlagSet, v + 1)
+ res.FlagSet = append(res.FlagSet, v+1)
break
}
}
@@ -97,7 +97,7 @@ func main() {
}
rs := resource.NewDbResource(rsStore)
cfg := engine.Config{
- Root: "root",
+ Root: "root",
SessionId: sessionId,
FlagCount: 4,
}
@@ -116,7 +116,7 @@ func main() {
fp := path.Join(dp, sessionId)
aux := &fsData{
- path: fp,
+ path: fp,
persister: pr,
}
rs.AddLocalFunc("poke", aux.poke)
diff --git a/examples/static/main.go b/examples/static/main.go
@@ -11,26 +11,25 @@ import (
testdataloader "github.com/peteole/testdata-loader"
"git.defalsify.org/vise.git/cache"
+ "git.defalsify.org/vise.git/db"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
- "git.defalsify.org/vise.git/db"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
var (
- baseDir = testdataloader.GetBasePath()
- scriptDir = path.Join(baseDir, "examples", "static")
+ baseDir = testdataloader.GetBasePath()
+ scriptDir = path.Join(baseDir, "examples", "static")
emptyResult = resource.Result{}
)
func out(ctx context.Context, sym string, input []byte) (resource.Result, error) {
return resource.Result{
- Content: "foo",
+ Content: "foo",
}, nil
}
-
func main() {
var useInternal bool
root := "root"
diff --git a/examples/validate/main.go b/examples/validate/main.go
@@ -10,15 +10,15 @@ import (
testdataloader "github.com/peteole/testdata-loader"
+ fsdb "git.defalsify.org/vise.git/db/fs"
"git.defalsify.org/vise.git/engine"
"git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/state"
- fsdb "git.defalsify.org/vise.git/db/fs"
)
var (
- baseDir = testdataloader.GetBasePath()
- scriptDir = path.Join(baseDir, "examples", "validate")
+ baseDir = testdataloader.GetBasePath()
+ scriptDir = path.Join(baseDir, "examples", "validate")
emptyResult = resource.Result{}
)
@@ -31,7 +31,7 @@ type verifyResource struct {
st *state.State
}
-func(vr *verifyResource) verify(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (vr *verifyResource) verify(ctx context.Context, sym string, input []byte) (resource.Result, error) {
var err error
if string(input) == "something" {
vr.st.SetFlag(USERFLAG_HAVESOMETHING)
@@ -41,7 +41,7 @@ func(vr *verifyResource) verify(ctx context.Context, sym string, input []byte) (
}, err
}
-func(vr *verifyResource) again(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (vr *verifyResource) again(ctx context.Context, sym string, input []byte) (resource.Result, error) {
vr.st.ResetFlag(USERFLAG_HAVESOMETHING)
return resource.Result{}, nil
}
@@ -70,8 +70,8 @@ func main() {
rs.AddLocalFunc("again", rs.again)
cfg := engine.Config{
- Root: "root",
- SessionId: sessionId,
+ Root: "root",
+ SessionId: sessionId,
OutputSize: uint32(size),
}
diff --git a/internal/resourcetest/util.go b/internal/resourcetest/util.go
@@ -3,14 +3,14 @@ package resourcetest
import (
"context"
- "git.defalsify.org/vise.git/resource"
- "git.defalsify.org/vise.git/db/mem"
"git.defalsify.org/vise.git/db"
+ "git.defalsify.org/vise.git/db/mem"
+ "git.defalsify.org/vise.git/resource"
)
type TestResource struct {
*resource.DbResource
- db db.Db
+ db db.Db
ctx context.Context
}
@@ -47,36 +47,36 @@ func newTestResource(path string) *TestResource {
rsd := resource.NewDbResource(store)
rs := &TestResource{
DbResource: rsd,
- ctx: ctx,
- db: store,
+ ctx: ctx,
+ db: store,
}
return rs
}
-func(tr *TestResource) AddTemplate(ctx context.Context, key string, val string) error {
+func (tr *TestResource) AddTemplate(ctx context.Context, key string, val string) error {
tr.db.SetPrefix(db.DATATYPE_TEMPLATE)
return tr.db.Put(ctx, []byte(key), []byte(val))
}
-func(tr *TestResource) AddBytecode(ctx context.Context, key string, val []byte) error {
+func (tr *TestResource) AddBytecode(ctx context.Context, key string, val []byte) error {
tr.db.SetPrefix(db.DATATYPE_BIN)
return tr.db.Put(ctx, []byte(key), val)
}
-func(tr *TestResource) AddMenu(ctx context.Context, key string, val string) error {
+func (tr *TestResource) AddMenu(ctx context.Context, key string, val string) error {
tr.db.SetPrefix(db.DATATYPE_MENU)
return tr.db.Put(ctx, []byte(key), []byte(val))
}
-func(tr *TestResource) AddFunc(ctx context.Context, key string, fn resource.EntryFunc) {
+func (tr *TestResource) AddFunc(ctx context.Context, key string, fn resource.EntryFunc) {
tr.AddLocalFunc(key, fn)
}
-func(tr *TestResource) AddStatic(ctx context.Context, key string, val string) error {
+func (tr *TestResource) AddStatic(ctx context.Context, key string, val string) error {
tr.db.SetPrefix(db.DATATYPE_STATICLOAD)
return tr.db.Put(ctx, []byte(key), []byte(val))
}
-func(tr *TestResource) Lock() {
+func (tr *TestResource) Lock() {
tr.db.SetLock(0, true)
}
diff --git a/internal/resourcetest/util_test.go b/internal/resourcetest/util_test.go
@@ -8,7 +8,6 @@ package resourcetest
// "git.defalsify.org/vise.git/resource"
//)
-
//type TestSizeResource struct {
// *DbResource
//}
diff --git a/lang/lang.go b/lang/lang.go
@@ -4,7 +4,7 @@ import (
"context"
"fmt"
- "github.com/barbashov/iso639-3"
+ iso639_3 "github.com/barbashov/iso639-3"
)
var (
@@ -35,7 +35,7 @@ func LanguageFromCode(code string) (Language, error) {
// String implements the String interface.
//
// Returns a representation of the Language fit for debugging.
-func(l Language) String() string {
+func (l Language) String() string {
return fmt.Sprintf("%s (%s)", l.Code, l.Name)
}
diff --git a/lang/lang_test.go b/lang/lang_test.go
@@ -8,7 +8,7 @@ func TestLang(t *testing.T) {
var err error
_, err = LanguageFromCode("xxx")
if err == nil {
- t.Fatalf("expected error")
+ t.Fatalf("expected error")
}
l, err := LanguageFromCode("en")
if err != nil {
diff --git a/logging/debug.go b/logging/debug.go
@@ -1,3 +1,4 @@
+//go:build logdebug
// +build logdebug
package logging
diff --git a/logging/default.go b/logging/default.go
@@ -1,3 +1,4 @@
+//go:build !logwarn && !logdebug && !loginfo && !logtrace && !logerror
// +build !logwarn,!logdebug,!loginfo,!logtrace,!logerror
package logging
diff --git a/logging/error.go b/logging/error.go
@@ -1,3 +1,4 @@
+//go:build logerror
// +build logerror
package logging
diff --git a/logging/info.go b/logging/info.go
@@ -1,3 +1,4 @@
+//go:build loginfo
// +build loginfo
package logging
diff --git a/logging/logging.go b/logging/logging.go
@@ -22,17 +22,17 @@ const (
var (
levelStr = map[int]string{
- LVL_ERROR: "E",
- LVL_WARN: "W",
- LVL_INFO: "I",
- LVL_DEBUG: "D",
- LVL_TRACE: "T",
+ LVL_ERROR: "E",
+ LVL_WARN: "W",
+ LVL_INFO: "I",
+ LVL_DEBUG: "D",
+ LVL_TRACE: "T",
}
)
// AsString returns the string representation used in logging output for the given log level.
func AsString(level int) string {
- return levelStr[level]
+ return levelStr[level]
}
type Logger interface {
@@ -65,4 +65,3 @@ type Logger interface {
// ErrorCtxf logs a line with context to the default writer the ERROR loglevel.
ErrorCtxf(ctx context.Context, msg string, args ...any)
}
-
diff --git a/logging/trace.go b/logging/trace.go
@@ -1,3 +1,4 @@
+//go:build logtrace
// +build logtrace
package logging
diff --git a/logging/vanilla.go b/logging/vanilla.go
@@ -18,7 +18,7 @@ var (
type Vanilla struct {
domain string
levelFilter int
- ctxkey []string
+ ctxkey []string
}
// NewVanilla creates a new Vanilla logger.
@@ -163,12 +163,12 @@ func (v Vanilla) argsToString(ctx context.Context, args []any) string {
var s string
if ctx != nil {
- for _, k := range(v.ctxkey) {
+ for _, k := range v.ctxkey {
v := ctx.Value(k)
if v != nil {
v, ok := v.(string)
if ok {
- args = append(args, "x-" + k, v)
+ args = append(args, "x-"+k, v)
}
}
}
diff --git a/logging/vanilla_test.go b/logging/vanilla_test.go
@@ -23,7 +23,7 @@ func TestVanilla(t *testing.T) {
func TestVanillaCtx(t *testing.T) {
logg := NewVanilla().WithDomain("test").WithLevel(LVL_DEBUG).WithContextKey("foo")
- ctx := context.WithValue(context.Background(), "foo", "bar")
+ ctx := context.WithValue(context.Background(), "foo", "bar")
w := bytes.NewBuffer(nil)
LogWriter = w
diff --git a/logging/warn.go b/logging/warn.go
@@ -1,3 +1,4 @@
+//go:build logwarn
// +build logwarn
package logging
diff --git a/persist/fs_test.go b/persist/fs_test.go
@@ -7,9 +7,9 @@ import (
"testing"
"git.defalsify.org/vise.git/cache"
+ "git.defalsify.org/vise.git/db/mem"
"git.defalsify.org/vise.git/state"
"git.defalsify.org/vise.git/vm"
- "git.defalsify.org/vise.git/db/mem"
)
func TestSerializeState(t *testing.T) {
@@ -131,7 +131,7 @@ func TestSaveLoadFlags(t *testing.T) {
}
prnew := NewPersister(store)
-
+
err = prnew.Load("xyzzy")
if err != nil {
t.Fatal(err)
diff --git a/persist/persist.go b/persist/persist.go
@@ -6,45 +6,44 @@ import (
"github.com/fxamacker/cbor/v2"
+ "git.defalsify.org/vise.git/cache"
"git.defalsify.org/vise.git/db"
"git.defalsify.org/vise.git/state"
- "git.defalsify.org/vise.git/cache"
)
// Persister abstracts storage and retrieval of state and cache.
type Persister struct {
- State *state.State
+ State *state.State
Memory *cache.Cache
- ctx context.Context
- db db.Db
- flush bool
+ ctx context.Context
+ db db.Db
+ flush bool
}
// NewPersister creates a new Persister instance.
func NewPersister(db db.Db) *Persister {
return &Persister{
- db: db,
+ db: db,
ctx: context.Background(),
}
}
// WithSession is a chainable function that sets the current golang context of the persister.
-func(p *Persister) WithContext(ctx context.Context) *Persister {
+func (p *Persister) WithContext(ctx context.Context) *Persister {
p.ctx = ctx
return p
}
// WithSession is a chainable function that sets the current session context of the persister.
-func(p *Persister) WithSession(sessionId string) *Persister {
+func (p *Persister) WithSession(sessionId string) *Persister {
p.db.SetSession(sessionId)
return p
}
-
// WithContent is a chainable function that sets a current State and Cache object.
//
// This method is normally called before Serialize / Save.
-func(p *Persister) WithContent(st *state.State, ca *cache.Cache) *Persister {
+func (p *Persister) WithContent(st *state.State, ca *cache.Cache) *Persister {
p.State = st
p.Memory = ca
return p
@@ -52,7 +51,7 @@ func(p *Persister) WithContent(st *state.State, ca *cache.Cache) *Persister {
// WithFlush is a chainable function that instructs the persister to flush its memory and state
// after successful Save.
-func(p *Persister) WithFlush() *Persister {
+func (p *Persister) WithFlush() *Persister {
p.flush = true
return p
}
@@ -60,27 +59,27 @@ func(p *Persister) WithFlush() *Persister {
// Invalid checks if the underlying state has been invalidated.
//
// An invalid state will cause Save to panic.
-func(p *Persister) Invalid() bool {
+func (p *Persister) Invalid() bool {
return p.GetState().Invalid() || p.GetMemory().Invalid()
}
// GetState returns the state enclosed by the Persister.
-func(p *Persister) GetState() *state.State {
+func (p *Persister) GetState() *state.State {
return p.State
}
// GetMemory returns the cache (memory) enclosed by the Persister.
-func(p *Persister) GetMemory() cache.Memory {
+func (p *Persister) GetMemory() cache.Memory {
return p.Memory
}
// Serialize encodes the state and cache into byte form for storage.
-func(p *Persister) Serialize() ([]byte, error) {
+func (p *Persister) Serialize() ([]byte, error) {
return cbor.Marshal(p)
}
// Deserialize decodes the state and cache from storage, and applies them to the persister.
-func(p *Persister) Deserialize(b []byte) error {
+func (p *Persister) Deserialize(b []byte) error {
err := cbor.Unmarshal(b, p)
return err
}
@@ -89,7 +88,7 @@ func(p *Persister) Deserialize(b []byte) error {
//
// If save is successful and WithFlush() has been called, the state and memory
// will be empty when the method returns.
-func(p *Persister) Save(key string) error {
+func (p *Persister) Save(key string) error {
if p.Invalid() {
panic("persister has been invalidated")
}
@@ -114,7 +113,7 @@ func(p *Persister) Save(key string) error {
}
// Load retrieves state and cache from the db.Db backend.
-func(p *Persister) Load(key string) error {
+func (p *Persister) Load(key string) error {
p.db.SetPrefix(db.DATATYPE_STATE)
b, err := p.db.Get(p.ctx, []byte(key))
if err != nil {
@@ -130,6 +129,6 @@ func(p *Persister) Load(key string) error {
}
// String implements the String interface
-func(p *Persister) String() string {
+func (p *Persister) String() string {
return fmt.Sprintf("perister @%p state:%p cache:%p", p, p.State, p.Memory)
}
diff --git a/persist/persist_test.go b/persist/persist_test.go
@@ -4,9 +4,9 @@ import (
"context"
"testing"
+ "git.defalsify.org/vise.git/cache"
"git.defalsify.org/vise.git/db/mem"
"git.defalsify.org/vise.git/state"
- "git.defalsify.org/vise.git/cache"
)
func TestCreateCache(t *testing.T) {
@@ -64,7 +64,7 @@ func TestInvalidateState(t *testing.T) {
st.Invalidate()
defer func() {
if r := recover(); r == nil {
- t.Fatal("expected panic")
+ t.Fatal("expected panic")
}
}()
_ = pr.Save("foo")
@@ -86,7 +86,7 @@ func TestInvalidateCache(t *testing.T) {
ca.Invalidate()
defer func() {
if r := recover(); r == nil {
- t.Fatal("expected panic")
+ t.Fatal("expected panic")
}
}()
_ = pr.Save("foo")
@@ -109,7 +109,7 @@ func TestInvalidateAll(t *testing.T) {
st.Invalidate()
defer func() {
if r := recover(); r == nil {
- t.Fatal("expected panic")
+ t.Fatal("expected panic")
}
}()
_ = pr.Save("foo")
@@ -128,7 +128,7 @@ func TestFlush(t *testing.T) {
ca.Push()
ca.Add("blinky", "clyde", 13)
ca.WithCacheSize(666)
-
+
st.Down("xyzzy")
st.Down("plugh")
st.SetFlag(3)
@@ -145,7 +145,7 @@ func TestFlush(t *testing.T) {
t.Fatalf("expected bitsize %d, got %d", expectBitSize, st.FlagBitSize())
}
st = pe.GetState()
- node, lvl := st.Where()
+ node, lvl := st.Where()
if lvl != 0 {
t.Fatalf("expected level 0, got: %d", lvl)
}
diff --git a/render/menu.go b/render/menu.go
@@ -16,7 +16,7 @@ type BrowseError struct {
}
// Error implements the Error interface.
-func(err *BrowseError) Error() string {
+func (err *BrowseError) Error() string {
return fmt.Sprintf("index is out of bounds: %v", err.Idx)
}
@@ -39,12 +39,12 @@ type BrowseConfig struct {
// Create a BrowseConfig with default values.
func DefaultBrowseConfig() BrowseConfig {
return BrowseConfig{
- NextAvailable: true,
- NextSelector: "11",
- NextTitle: "next",
+ NextAvailable: true,
+ NextSelector: "11",
+ NextTitle: "next",
PreviousAvailable: true,
- PreviousSelector: "22",
- PreviousTitle: "previous",
+ PreviousSelector: "22",
+ PreviousTitle: "previous",
}
}
@@ -52,22 +52,22 @@ func DefaultBrowseConfig() BrowseConfig {
//
// May be included in a Page object to render menus for pages.
type Menu struct {
- rs resource.Resource
- menu [][2]string // selector and title for menu items.
- browse BrowseConfig // browse definitions.
- pageCount uint16 // number of pages the menu should represent.
- canNext bool // availability flag for the "next" browse option.
- canPrevious bool // availability flag for the "previous" browse option.
+ rs resource.Resource
+ menu [][2]string // selector and title for menu items.
+ browse BrowseConfig // browse definitions.
+ pageCount uint16 // number of pages the menu should represent.
+ canNext bool // availability flag for the "next" browse option.
+ canPrevious bool // availability flag for the "previous" browse option.
//outputSize uint16 // maximum size constraint for the menu.
sink bool
keep bool
- sep string
+ sep string
}
// String implements the String interface.
//
// It returns debug representation of menu.
-func(m Menu) String() string {
+func (m Menu) String() string {
return fmt.Sprintf("pagecount: %v menusink: %v next: %v prev: %v", m.pageCount, m.sink, m.canNext, m.canPrevious)
}
@@ -75,18 +75,18 @@ func(m Menu) String() string {
func NewMenu() *Menu {
return &Menu{
keep: true,
- sep: ":",
+ sep: ":",
}
}
// WithPageCount is a chainable function that defines the number of allowed pages for browsing.
-func(m *Menu) WithSeparator(sep string) *Menu {
+func (m *Menu) WithSeparator(sep string) *Menu {
m.sep = sep
return m
}
// WithPageCount is a chainable function that defines the number of allowed pages for browsing.
-func(m *Menu) WithPageCount(pageCount uint16) *Menu {
+func (m *Menu) WithPageCount(pageCount uint16) *Menu {
m.pageCount = pageCount
return m
}
@@ -94,7 +94,7 @@ func(m *Menu) WithPageCount(pageCount uint16) *Menu {
// WithPages is a chainable function which activates pagination in the menu.
//
// It is equivalent to WithPageCount(1)
-func(m *Menu) WithPages() *Menu {
+func (m *Menu) WithPages() *Menu {
if m.pageCount == 0 {
m.pageCount = 1
}
@@ -104,7 +104,7 @@ func(m *Menu) WithPages() *Menu {
// WithSink is a chainable function that informs the menu that a content sink exists in the render.
//
// A content sink receives priority to consume all remaining space after all non-sink items have been rendered.
-func(m *Menu) WithSink() *Menu {
+func (m *Menu) WithSink() *Menu {
m.sink = true
return m
}
@@ -112,17 +112,17 @@ func(m *Menu) WithSink() *Menu {
// WithDispose is a chainable function that preserves the menu after render is complete.
//
// It is used for multi-page content.
-func(m *Menu) WithDispose() *Menu {
+func (m *Menu) WithDispose() *Menu {
m.keep = false
return m
}
-func(m *Menu) WithResource(rs resource.Resource) *Menu {
+func (m *Menu) WithResource(rs resource.Resource) *Menu {
m.rs = rs
return m
}
-func(m Menu) IsSink() bool {
+func (m Menu) IsSink() bool {
return m.sink
}
@@ -138,18 +138,18 @@ func(m Menu) IsSink() bool {
//}
// WithBrowseConfig defines the criteria for page browsing.
-func(m *Menu) WithBrowseConfig(cfg BrowseConfig) *Menu {
+func (m *Menu) WithBrowseConfig(cfg BrowseConfig) *Menu {
m.browse = cfg
return m
}
// GetBrowseConfig returns a copy of the current state of the browse configuration.
-func(m *Menu) GetBrowseConfig() BrowseConfig {
+func (m *Menu) GetBrowseConfig() BrowseConfig {
return m.browse
}
// Put adds a menu option to the menu rendering.
-func(m *Menu) Put(selector string, title string) error {
+func (m *Menu) Put(selector string, title string) error {
m.menu = append(m.menu, [2]string{selector, title})
return nil
}
@@ -160,11 +160,11 @@ func(m *Menu) Put(selector string, title string) error {
//}
// Sizes returns the size limitations for each part of the render, as a four-element array:
-// 1. mainSize
-// 2. prevsize
-// 3. nextsize
-// 4. nextsize + prevsize
-func(m *Menu) Sizes(ctx context.Context) ([4]uint32, error) {
+// 1. mainSize
+// 2. prevsize
+// 3. nextsize
+// 4. nextsize + prevsize
+func (m *Menu) Sizes(ctx context.Context) ([4]uint32, error) {
var menuSizes [4]uint32
cfg := m.GetBrowseConfig()
tmpm := NewMenu().WithBrowseConfig(cfg)
@@ -189,7 +189,7 @@ func(m *Menu) Sizes(ctx context.Context) ([4]uint32, error) {
}
// title corresponding to the menu symbol.
-func(m *Menu) titleFor(ctx context.Context, title string) (string, error) {
+func (m *Menu) titleFor(ctx context.Context, title string) (string, error) {
if m.rs == nil {
return title, nil
}
@@ -203,7 +203,7 @@ func(m *Menu) titleFor(ctx context.Context, title string) (string, error) {
// Render returns the full current state of the menu as a string.
//
// After this has been executed, the state of the menu will be empty.
-func(m *Menu) Render(ctx context.Context, idx uint16) (string, error) {
+func (m *Menu) Render(ctx context.Context, idx uint16) (string, error) {
var menuCopy [][2]string
if m.keep {
for _, v := range m.menu {
@@ -239,7 +239,7 @@ func(m *Menu) Render(ctx context.Context, idx uint16) (string, error) {
}
// add available browse options.
-func(m *Menu) applyPage(idx uint16) error {
+func (m *Menu) applyPage(idx uint16) error {
if m.pageCount == 0 {
if idx > 0 {
return fmt.Errorf("index %v > 0 for non-paged menu", idx)
@@ -249,10 +249,10 @@ func(m *Menu) applyPage(idx uint16) error {
return &BrowseError{Idx: idx, PageCount: m.pageCount}
//return fmt.Errorf("index %v out of bounds (%v)", idx, m.pageCount)
}
-
+
m.reset()
- if idx == m.pageCount - 1 {
+ if idx == m.pageCount-1 {
m.canNext = false
}
if idx == 0 {
@@ -277,7 +277,7 @@ func(m *Menu) applyPage(idx uint16) error {
// removes and returns the first of remaining menu options.
// fails if menu is empty.
-func(m *Menu) shiftMenu() (string, string, error) {
+func (m *Menu) shiftMenu() (string, string, error) {
if len(m.menu) == 0 {
return "", "", fmt.Errorf("menu is empty")
}
@@ -287,7 +287,7 @@ func(m *Menu) shiftMenu() (string, string, error) {
}
// prepare menu object for re-use.
-func(m *Menu) reset() {
+func (m *Menu) reset() {
if m.browse.NextAvailable {
m.canNext = true
}
@@ -297,7 +297,7 @@ func(m *Menu) reset() {
}
// Reset clears all current state from the menu object, making it ready for re-use in a new render.
-func(m *Menu) Reset() {
+func (m *Menu) Reset() {
m.menu = [][2]string{}
m.sink = false
m.reset()
diff --git a/render/page.go b/render/page.go
@@ -14,26 +14,26 @@ import (
// Page executes output rendering into pages constrained by size.
type Page struct {
cacheMap map[string]string // Mapped content symbols
- cache cache.Memory // Content store.
+ cache cache.Memory // Content store.
resource resource.Resource // Symbol resolver.
- menu *Menu // Menu rendererer.
- sink *string // Content symbol rendered by dynamic size.
- sizer *Sizer // Process size constraints.
- err error // Error state to prepend to output.
- extra string // Extra content to append to received template
+ menu *Menu // Menu rendererer.
+ sink *string // Content symbol rendered by dynamic size.
+ sizer *Sizer // Process size constraints.
+ err error // Error state to prepend to output.
+ extra string // Extra content to append to received template
}
// NewPage creates a new Page object.
func NewPage(cache cache.Memory, rs resource.Resource) *Page {
return &Page{
- cache: cache,
+ cache: cache,
cacheMap: make(map[string]string),
resource: rs,
}
}
// WithMenu sets a menu renderer for the page.
-func(pg *Page) WithMenu(menu *Menu) *Page {
+func (pg *Page) WithMenu(menu *Menu) *Page {
pg.menu = menu.WithResource(pg.resource)
//if pg.sizer != nil {
// pg.sizer = pg.sizer.WithMenuSize(pg.menu.ReservedSize())
@@ -42,22 +42,22 @@ func(pg *Page) WithMenu(menu *Menu) *Page {
}
// WithSizer sets a size constraints definition for the page.
-func(pg *Page) WithSizer(sizer *Sizer) *Page {
+func (pg *Page) WithSizer(sizer *Sizer) *Page {
pg.sizer = sizer
//if pg.menu != nil {
- //pg.sizer = pg.sizer.WithMenuSize(pg.menu.ReservedSize())
+ //pg.sizer = pg.sizer.WithMenuSize(pg.menu.ReservedSize())
//}
return pg
}
// WithError adds an error to prepend to the page output.
-func(pg *Page) WithError(err error) *Page {
+func (pg *Page) WithError(err error) *Page {
pg.err = err
return pg
}
// Error implements the Error interface.
-func(pg *Page) Error() string {
+func (pg *Page) Error() string {
if pg.err != nil {
return pg.err.Error()
}
@@ -65,7 +65,7 @@ func(pg *Page) Error() string {
}
// Usage returns size used by values and menu, and remaining size available
-func(pg *Page) Usage() (uint32, uint32, error) {
+func (pg *Page) Usage() (uint32, uint32, error) {
var l int
var c uint16
for k, v := range pg.cacheMap {
@@ -79,7 +79,7 @@ func(pg *Page) Usage() (uint32, uint32, error) {
r := uint32(l)
rsv := uint32(0)
if uint32(c) > r {
- rsv = uint32(c)-r
+ rsv = uint32(c) - r
}
//if pg.menu != nil {
// r += uint32(pg.menu.ReservedSize())
@@ -92,7 +92,7 @@ func(pg *Page) Usage() (uint32, uint32, error) {
// After this, Val() will return the value for the key, and Size() will include the value size and limitations in its calculations.
//
// Only one symbol with no size limitation may be mapped at the current level.
-func(pg *Page) Map(key string) error {
+func (pg *Page) Map(key string) error {
v, err := pg.cache.Get(key)
if err != nil {
return err
@@ -121,7 +121,7 @@ func(pg *Page) Map(key string) error {
// Val gets the mapped content for the given symbol.
//
// Fails if key is not mapped.
-func(pg *Page) Val(key string) (string, error) {
+func (pg *Page) Val(key string) (string, error) {
r := pg.cacheMap[key]
if len(r) == 0 {
return "", fmt.Errorf("key %v not mapped", key)
@@ -130,7 +130,7 @@ func(pg *Page) Val(key string) (string, error) {
}
// Sizes returned the actual used bytes by each mapped symbol.
-func(pg *Page) Sizes() (map[string]uint16, error) {
+func (pg *Page) Sizes() (map[string]uint16, error) {
sizes := make(map[string]uint16)
var haveSink bool
for k, _ := range pg.cacheMap {
@@ -149,7 +149,7 @@ func(pg *Page) Sizes() (map[string]uint16, error) {
}
// RenderTemplate is an adapter to implement the builtin golang text template renderer as resource.RenderTemplate.
-func(pg *Page) RenderTemplate(ctx context.Context, sym string, values map[string]string, idx uint16) (string, error) {
+func (pg *Page) RenderTemplate(ctx context.Context, sym string, values map[string]string, idx uint16) (string, error) {
tpl, err := pg.resource.GetTemplate(ctx, sym)
if err != nil {
return "", err
@@ -173,7 +173,7 @@ func(pg *Page) RenderTemplate(ctx context.Context, sym string, values map[string
return "", fmt.Errorf("sizer needed for indexed render")
}
logg.Debugf("render for", "index", idx)
-
+
tp, err := template.New("tester").Option("missingkey=error").Parse(tpl)
if err != nil {
return "", err
@@ -188,7 +188,7 @@ func(pg *Page) RenderTemplate(ctx context.Context, sym string, values map[string
}
// Render renders the current mapped content and menu state against the template associated with the symbol.
-func(pg *Page) Render(ctx context.Context, sym string, idx uint16) (string, error) {
+func (pg *Page) Render(ctx context.Context, sym string, idx uint16) (string, error) {
var err error
values, err := pg.prepare(ctx, sym, pg.cacheMap, idx)
@@ -202,7 +202,7 @@ func(pg *Page) Render(ctx context.Context, sym string, idx uint16) (string, erro
// Reset prepared the Page object for re-use.
//
// It clears mappings and removes the sink definition.
-func(pg *Page) Reset() {
+func (pg *Page) Reset() {
pg.sink = nil
pg.extra = ""
pg.cacheMap = make(map[string]string)
@@ -217,7 +217,7 @@ func(pg *Page) Reset() {
// extract sink values to separate array, and set the content of sink in values map to zero-length string.
//
// this allows render of page with emptry content the sink symbol to discover remaining capacity.
-func(pg *Page) split(sym string, values map[string]string) (map[string]string, string, []string, error) {
+func (pg *Page) split(sym string, values map[string]string) (map[string]string, string, []string, error) {
var sink string
var sinkValues []string
noSinkValues := make(map[string]string)
@@ -235,7 +235,7 @@ func(pg *Page) split(sym string, values map[string]string) (map[string]string, s
}
noSinkValues[k] = v
}
-
+
if sink == "" {
logg.Tracef("no sink found", "sym", sym)
return values, "", nil, nil
@@ -248,7 +248,7 @@ func(pg *Page) split(sym string, values map[string]string) (map[string]string, s
// newlines (within the same page) render are defined by NUL (0x00).
//
// pages are separated by LF (0x0a).
-func(pg *Page) joinSink(sinkValues []string, remaining uint32, menuSizes [4]uint32) (string, uint16, error) {
+func (pg *Page) joinSink(sinkValues []string, remaining uint32, menuSizes [4]uint32) (string, uint16, error) {
l := 0
var count uint16
tb := strings.Builder{}
@@ -265,7 +265,7 @@ func(pg *Page) joinSink(sinkValues []string, remaining uint32, menuSizes [4]uint
for i, v := range sinkValues {
l += len(v)
logg.Tracef("processing sink", "idx", i, "value", v, "netremaining", netRemaining, "l", l)
- if uint32(l) > netRemaining - 1 {
+ if uint32(l) > netRemaining-1 {
if tb.Len() == 0 {
return "", 0, fmt.Errorf("capacity insufficient for sink field %v", i)
}
@@ -297,7 +297,7 @@ func(pg *Page) joinSink(sinkValues []string, remaining uint32, menuSizes [4]uint
return r, count, nil
}
-func(pg *Page) applyMenuSink(ctx context.Context) ([]string, error) {
+func (pg *Page) applyMenuSink(ctx context.Context) ([]string, error) {
s, err := pg.menu.WithDispose().WithPages().Render(ctx, 0)
if err != nil {
return nil, err
@@ -307,7 +307,7 @@ func(pg *Page) applyMenuSink(ctx context.Context) ([]string, error) {
}
// render menu and all syms except sink, split sink into display chunks
-func(pg *Page) prepare(ctx context.Context, sym string, values map[string]string, idx uint16) (map[string]string, error) {
+func (pg *Page) prepare(ctx context.Context, sym string, values map[string]string, idx uint16) (map[string]string, error) {
if pg.sizer == nil {
return values, nil
}
@@ -381,7 +381,7 @@ func(pg *Page) prepare(ctx context.Context, sym string, values map[string]string
}
// render template, menu (if it exists), and audit size constraint (if it exists).
-func(pg *Page) render(ctx context.Context, sym string, values map[string]string, idx uint16) (string, error) {
+func (pg *Page) render(ctx context.Context, sym string, values map[string]string, idx uint16) (string, error) {
var ok bool
r := ""
s, err := pg.RenderTemplate(ctx, sym, values, idx)
diff --git a/render/page_test.go b/render/page_test.go
@@ -9,7 +9,6 @@ import (
"git.defalsify.org/vise.git/internal/resourcetest"
)
-
func TestPageCurrentSize(t *testing.T) {
t.Skip("usage is not in use, and it is unclear how it should be calculated")
ca := cache.NewCache()
@@ -145,4 +144,3 @@ bar
t.Fatalf("expected:\n\t%s\ngot:\n\t%s", expect, r)
}
}
-
diff --git a/render/size.go b/render/size.go
@@ -9,17 +9,17 @@ import (
// Sizer splits dynamic contents into individual segments for browseable pages.
type Sizer struct {
outputSize uint32 // maximum output for a single page.
-// menuSize uint16 // actual menu size for the dynamic page being sized
- memberSizes map[string]uint16 // individual byte sizes of all content to be rendered by template.
- totalMemberSize uint32 // total byte size of all content to be rendered by template (sum of memberSizes)
- crsrs []uint32 // byte offsets in the sink content for browseable pages indices.
- sink string // sink symbol.
+ // menuSize uint16 // actual menu size for the dynamic page being sized
+ memberSizes map[string]uint16 // individual byte sizes of all content to be rendered by template.
+ totalMemberSize uint32 // total byte size of all content to be rendered by template (sum of memberSizes)
+ crsrs []uint32 // byte offsets in the sink content for browseable pages indices.
+ sink string // sink symbol.
}
// NewSizer creates a new Sizer object with the given output size constraint.
func NewSizer(outputSize uint32) *Sizer {
return &Sizer{
- outputSize: outputSize,
+ outputSize: outputSize,
memberSizes: make(map[string]uint16),
}
}
@@ -31,7 +31,7 @@ func NewSizer(outputSize uint32) *Sizer {
//}
// Set adds a content symbol in the state it will be used by the renderer.
-func(szr *Sizer) Set(key string, size uint16) error {
+func (szr *Sizer) Set(key string, size uint16) error {
szr.memberSizes[key] = size
if size == 0 {
szr.sink = key
@@ -41,7 +41,7 @@ func(szr *Sizer) Set(key string, size uint16) error {
}
// Check audits whether the rendered string is within the output size constraint of the sizer.
-func(szr *Sizer) Check(s string) (uint32, bool) {
+func (szr *Sizer) Check(s string) (uint32, bool) {
l := uint32(len(s))
if szr.outputSize > 0 {
if l > szr.outputSize {
@@ -57,19 +57,19 @@ func(szr *Sizer) Check(s string) (uint32, bool) {
// String implements the String interface.
//
// It outputs a representation of the Sizer fit for debug output.
-func(szr *Sizer) String() string {
-// var diff uint32
-// if szr.outputSize > 0 {
-// diff = szr.outputSize - szr.totalMemberSize - uint32(szr.menuSize)
-// }
-// return fmt.Sprintf("output: %v, member: %v, menu: %v, diff: %v", szr.outputSize, szr.totalMemberSize, szr.menuSize, diff)
+func (szr *Sizer) String() string {
+ // var diff uint32
+ // if szr.outputSize > 0 {
+ // diff = szr.outputSize - szr.totalMemberSize - uint32(szr.menuSize)
+ // }
+ // return fmt.Sprintf("output: %v, member: %v, menu: %v, diff: %v", szr.outputSize, szr.totalMemberSize, szr.menuSize, diff)
return fmt.Sprintf("output: %v, member: %v", szr.outputSize, szr.totalMemberSize)
}
// Size gives the byte size of content for a single symbol.
//
// Fails if the symbol has not been registered using Set
-func(szr *Sizer) Size(s string) (uint16, error) {
+func (szr *Sizer) Size(s string) (uint16, error) {
r, ok := szr.memberSizes[s]
if !ok {
return 0, fmt.Errorf("unknown member: %s", s)
@@ -83,7 +83,7 @@ func(szr *Sizer) Size(s string) (uint16, error) {
//}
// AddCursor adds a pagination cursor for the paged sink content.
-func(szr *Sizer) AddCursor(c uint32) {
+func (szr *Sizer) AddCursor(c uint32) {
logg.Debugf("Added cursor", "offset", c)
szr.crsrs = append(szr.crsrs, c)
}
@@ -91,7 +91,7 @@ func(szr *Sizer) AddCursor(c uint32) {
// GetAt the paged symbols for the current page index.
//
// Fails if index requested is out of range.
-func(szr *Sizer) GetAt(values map[string]string, idx uint16) (map[string]string, error) {
+func (szr *Sizer) GetAt(values map[string]string, idx uint16) (map[string]string, error) {
if szr.sink == "" {
return values, nil
}
@@ -100,7 +100,7 @@ func(szr *Sizer) GetAt(values map[string]string, idx uint16) (map[string]string,
logg.Tracef("check values", "k", k, "v", v, "idx", idx, "cursors", szr.crsrs)
if szr.sink == k {
if idx >= uint16(len(szr.crsrs)) {
- return nil, fmt.Errorf("no more values in index")
+ return nil, fmt.Errorf("no more values in index")
}
c := szr.crsrs[idx]
v = v[c:]
@@ -117,6 +117,6 @@ func(szr *Sizer) GetAt(values map[string]string, idx uint16) (map[string]string,
}
// Reset flushes all size measurements, making the sizer available for reuse.
-func(szr *Sizer) Reset() {
+func (szr *Sizer) Reset() {
szr.crsrs = []uint32{}
}
diff --git a/render/size_test.go b/render/size_test.go
@@ -6,10 +6,10 @@ import (
"math/rand"
"testing"
- "git.defalsify.org/vise.git/state"
- "git.defalsify.org/vise.git/resource"
- "git.defalsify.org/vise.git/internal/resourcetest"
"git.defalsify.org/vise.git/cache"
+ "git.defalsify.org/vise.git/internal/resourcetest"
+ "git.defalsify.org/vise.git/resource"
+ "git.defalsify.org/vise.git/state"
)
type testSizeResource struct {
@@ -150,7 +150,7 @@ func TestSizePages(t *testing.T) {
mn.Put("2", "go to bar")
ctx := context.Background()
- r, err := pg.Render(ctx, "pages", 0)
+ r, err := pg.Render(ctx, "pages", 0)
if err != nil {
t.Fatal(err)
}
@@ -163,7 +163,6 @@ lala poo
1:foo the foo
2:go to bar`
-
if r != expect {
t.Fatalf("expected:\n\t%x\ngot:\n\t%x\n", expect, r)
}
@@ -188,11 +187,11 @@ func TestManySizes(t *testing.T) {
for i := 60; i < 160; i++ {
st := state.NewState(0)
ca := cache.NewCache()
- mn := NewMenu() //.WithOutputSize(32)
+ mn := NewMenu() //.WithOutputSize(32)
rs := newTestSizeResource() //.WithEntryFuncGetter(funcFor).WithTemplateGetter(getTemplate)
rs.Lock()
//rs := TestSizeResource{
- // mrs,
+ // mrs,
//}
szr := NewSizer(uint32(i))
pg := NewPage(ca, rs).WithSizer(szr).WithMenu(mn)
@@ -258,7 +257,7 @@ func TestMenuCollideSink(t *testing.T) {
ca.Add("inky", "pinky", 5)
ca.Add("blinky", "clyde", 0)
pg.Map("inky")
-
+
mn := NewMenu().WithSink()
pg = pg.WithMenu(mn)
@@ -267,7 +266,7 @@ func TestMenuCollideSink(t *testing.T) {
if err != nil {
t.Fatal(err)
}
-
+
mn = NewMenu().WithSink()
pg = pg.WithMenu(mn)
pg.Map("blinky")
@@ -351,7 +350,6 @@ func TestMenuSink(t *testing.T) {
ca.Add("baz", "xyzzy", 5)
pg.Map("baz")
-
r, err = pg.Render(ctx, "foo", 2)
if err != nil {
t.Fatal(err)
@@ -372,7 +370,7 @@ func TestMiddlePage(t *testing.T) {
mn := NewMenu().WithBrowseConfig(DefaultBrowseConfig())
rs := newTestSizeResource()
rs.Lock()
- content := ""
+ content := ""
for i := 0; i < 42; i++ {
v := rand.Intn(26)
b := make([]byte, 3+(v%3))
@@ -401,4 +399,3 @@ func TestMiddlePage(t *testing.T) {
}
fmt.Printf("%s\n", r)
}
-
diff --git a/render/split.go b/render/split.go
@@ -15,6 +15,7 @@ func bookmark(values []string) []uint32 {
}
return bookmarks
}
+
//
//func paginate(bookmarks []uint32, capacity uint32) ([][]uint32, error) {
// if len(bookmarks) == 0 {
@@ -23,7 +24,7 @@ func bookmark(values []string) []uint32 {
// var c uint32
// var pages [][]uint32
// var prev uint32
-//
+//
// pages = append(pages, []uint32{})
// currentPage := 0
// lookAhead := bookmarks[1:]
@@ -79,7 +80,7 @@ func paginate(bookmarks []uint32, capacity uint32, nextSize uint32, prevSize uin
remaining -= int(prevSize)
}
if remaining < 0 {
- return nil, fmt.Errorf("underrun in item %v:%v (%v) index %v prevsize %v remain %v cap %v", bookmarks[i], lookAhead[i], lookAhead[i] - bookmarks[i], i, prevSize, remaining, capacity)
+ return nil, fmt.Errorf("underrun in item %v:%v (%v) index %v prevsize %v remain %v cap %v", bookmarks[i], lookAhead[i], lookAhead[i]-bookmarks[i], i, prevSize, remaining, capacity)
}
if isLast(c, last, uint32(remaining)) {
haveMore = false
@@ -87,13 +88,13 @@ func paginate(bookmarks []uint32, capacity uint32, nextSize uint32, prevSize uin
remaining -= int(nextSize)
}
if remaining < 0 {
- return nil, fmt.Errorf("underrun in item %v:%v (%v) index %v prevsize %v nextsize %v remain %v cap %v", bookmarks[i], lookAhead[i], lookAhead[i] - bookmarks[i], i, prevSize, nextSize, remaining, capacity)
+ return nil, fmt.Errorf("underrun in item %v:%v (%v) index %v prevsize %v nextsize %v remain %v cap %v", bookmarks[i], lookAhead[i], lookAhead[i]-bookmarks[i], i, prevSize, nextSize, remaining, capacity)
}
var z int
currentPage := len(pages) - 1
for i < lastIndex {
- logg.Tracef("have render", "bookmark", bookmarks[i], "lookahead", lookAhead[i], "diff", lookAhead[i] - bookmarks[i], "index", i, "prevsize", prevSize, "nextsize", nextSize, "remain", remaining, "capacity", capacity)
+ logg.Tracef("have render", "bookmark", bookmarks[i], "lookahead", lookAhead[i], "diff", lookAhead[i]-bookmarks[i], "index", i, "prevsize", prevSize, "nextsize", nextSize, "remain", remaining, "capacity", capacity)
v := lookAhead[i]
delta := int((v - c) + 1)
@@ -117,7 +118,7 @@ func paginate(bookmarks []uint32, capacity uint32, nextSize uint32, prevSize uin
}
}
- l := len(pages)-1
+ l := len(pages) - 1
pages[l] = append(pages[l], last)
return pages, nil
}
@@ -160,7 +161,7 @@ func explode(values []string, pages [][]uint32) string {
// return pages, nil
// }
//
-// var flatPages [][]uint32
+// var flatPages [][]uint32
//
// pages = append(pages, []uint32{})
// for _, v := range bookmarks {
@@ -171,7 +172,7 @@ func explode(values []string, pages [][]uint32) string {
//
// var c uint32
// var prev uint32
-// currentPage := 0
+// currentPage := 0
//
// for i, page := range pages {
// var delta uint32
diff --git a/render/split_test.go b/render/split_test.go
@@ -1,8 +1,8 @@
package render
import (
-// "bytes"
-// "log"
+ // "bytes"
+ // "log"
"testing"
)
@@ -52,7 +52,7 @@ func TestSplitPaginate(t *testing.T) {
// menu := NewMenu().WithBrowseConfig(menuCfg)
// menu.Put("0", "foo")
// menu.Put("1", "bar")
-//
+//
// vals := []string{"inky", "pinky", "blinky", "clyde", "tinkywinky", "dipsy", "lala", "pu"}
// v := bookmark(vals)
//// vv, err := paginate(v, 15, 0, 0)
@@ -102,7 +102,7 @@ func TestSplitPaginate(t *testing.T) {
// expectBytes = append(expectBytes, []byte("lala")...)
// expectBytes = append(expectBytes, byte(0x00))
// expectBytes = append(expectBytes, []byte("pu")...)
-//
+//
// if !bytes.Equal([]byte(s), expectBytes) {
// t.Fatalf("expected:\n\t%s\ngot:\n\t%x\n", expectBytes, s)
// }
diff --git a/resource/db.go b/resource/db.go
@@ -19,7 +19,7 @@ const (
type DbResource struct {
*MenuResource
typs uint8
- db db.Db
+ db db.Db
}
// NewDbResource instantiates a new DbResource
@@ -31,8 +31,8 @@ func NewDbResource(store db.Db) *DbResource {
}
rs := &DbResource{
MenuResource: NewMenuResource(),
- db: store,
- typs: db.DATATYPE_TEMPLATE | db.DATATYPE_MENU | db.DATATYPE_BIN,
+ db: store,
+ typs: db.DATATYPE_TEMPLATE | db.DATATYPE_MENU | db.DATATYPE_BIN,
}
rs.WithMenuGetter(rs.DbGetMenu)
rs.WithCodeGetter(rs.DbGetCode)
@@ -42,37 +42,37 @@ func NewDbResource(store db.Db) *DbResource {
}
// Without is a chainable function that disables handling of the given data type.
-func(g *DbResource) Without(typ uint8) *DbResource {
+func (g *DbResource) Without(typ uint8) *DbResource {
g.typs &= ^typ
return g
}
// Without is a chainable function that enables handling of the given data type.
-func(g *DbResource) With(typ uint8) *DbResource {
+func (g *DbResource) With(typ uint8) *DbResource {
g.typs |= typ
return g
}
// WithOnly is a chainable convenience function that disables handling of all except the given data type.
-func(g *DbResource) WithOnly(typ uint8) *DbResource {
+func (g *DbResource) WithOnly(typ uint8) *DbResource {
g.typs = typ
return g
}
-func(g *DbResource) mustSafe() {
+func (g *DbResource) mustSafe() {
if !g.db.Safe() {
panic("db unsafe for resource (db.Db.Safe() == false)")
}
}
// retrieve from underlying db.
-func(g *DbResource) fn(ctx context.Context, sym string) ([]byte, error) {
+func (g *DbResource) fn(ctx context.Context, sym string) ([]byte, error) {
g.mustSafe()
return g.db.Get(ctx, []byte(sym))
}
// retrieve from underlying db using a string key.
-func(g *DbResource) sfn(ctx context.Context, sym string) (string, error) {
+func (g *DbResource) sfn(ctx context.Context, sym string) (string, error) {
b, err := g.fn(ctx, sym)
if err != nil {
return "", err
@@ -83,8 +83,8 @@ func(g *DbResource) sfn(ctx context.Context, sym string) (string, error) {
// Will fail if support for db.DATATYPE_TEMPLATE has been disabled.
//
// By default bound to GetTemplate. Can be replaced with WithTemplateGetter.
-func(g *DbResource) DbGetTemplate(ctx context.Context, sym string) (string, error) {
- if g.typs & db.DATATYPE_TEMPLATE == 0 {
+func (g *DbResource) DbGetTemplate(ctx context.Context, sym string) (string, error) {
+ if g.typs&db.DATATYPE_TEMPLATE == 0 {
return "", errors.New("not a template getter")
}
g.db.SetPrefix(db.DATATYPE_TEMPLATE)
@@ -94,8 +94,8 @@ func(g *DbResource) DbGetTemplate(ctx context.Context, sym string) (string, erro
// Will fail if support for db.DATATYPE_MENU has been disabled.
//
// By default bound to GetMenu. Can be replaced with WithMenuGetter.
-func(g *DbResource) DbGetMenu(ctx context.Context, sym string) (string, error) {
- if g.typs & db.DATATYPE_MENU == 0{
+func (g *DbResource) DbGetMenu(ctx context.Context, sym string) (string, error) {
+ if g.typs&db.DATATYPE_MENU == 0 {
return "", errors.New("not a menu getter")
}
g.db.SetPrefix(db.DATATYPE_MENU)
@@ -113,9 +113,9 @@ func(g *DbResource) DbGetMenu(ctx context.Context, sym string) (string, error) {
// Will fail if support for db.DATATYPE_BIN has been disabled.
//
// By default bound to GetCode. Can be replaced with WithCodeGetter.
-func(g *DbResource) DbGetCode(ctx context.Context, sym string) ([]byte, error) {
+func (g *DbResource) DbGetCode(ctx context.Context, sym string) ([]byte, error) {
logg.TraceCtxf(ctx, "getcode", "sym", sym)
- if g.typs & db.DATATYPE_BIN == 0 {
+ if g.typs&db.DATATYPE_BIN == 0 {
return nil, errors.New("not a code getter")
}
g.db.SetPrefix(db.DATATYPE_BIN)
@@ -124,17 +124,17 @@ func(g *DbResource) DbGetCode(ctx context.Context, sym string) ([]byte, error) {
// The method will first attempt to resolve using the function registered
// with the MenuResource parent class.
-//
+//
// If no match is found, and if support for db.DATATYPE_STATICLOAD has been enabled,
// an additional lookup will be performed using the underlying db.
//
// By default bound to FuncFor. Can be replaced with WithEntryFuncGetter.
-func(g *DbResource) DbFuncFor(ctx context.Context, sym string) (EntryFunc, error) {
+func (g *DbResource) DbFuncFor(ctx context.Context, sym string) (EntryFunc, error) {
fn, err := g.MenuResource.FallbackFunc(ctx, sym)
if err == nil {
return fn, nil
}
- if g.typs & db.DATATYPE_STATICLOAD == 0 {
+ if g.typs&db.DATATYPE_STATICLOAD == 0 {
return nil, errors.New("not a staticload getter")
}
g.db.SetPrefix(db.DATATYPE_STATICLOAD)
@@ -143,7 +143,7 @@ func(g *DbResource) DbFuncFor(ctx context.Context, sym string) (EntryFunc, error
if !db.IsNotFound(err) {
return nil, err
}
- b, err = g.fn(ctx, sym + ".txt")
+ b, err = g.fn(ctx, sym+".txt")
if err != nil {
return nil, err
}
@@ -156,6 +156,6 @@ func(g *DbResource) DbFuncFor(ctx context.Context, sym string) (EntryFunc, error
}
// Close implements the Resource interface.
-func(g *DbResource) Close(ctx context.Context) error {
+func (g *DbResource) Close(ctx context.Context) error {
return g.db.Close(ctx)
}
diff --git a/resource/db_test.go b/resource/db_test.go
@@ -127,7 +127,7 @@ func TestDbGetterDirect(t *testing.T) {
t.Fatal(err)
}
r, err := fn(ctx, "", nil)
-if err != nil {
+ if err != nil {
t.Fatal(err)
}
if r.Content != "blinky" {
diff --git a/resource/gettext.go b/resource/gettext.go
@@ -9,29 +9,29 @@ import (
)
const (
- PoDomain = "default"
+ PoDomain = "default"
TemplateKeyPoDomain = "x-vise"
- MenuKeyPoDomain = "x-vise_menu"
+ MenuKeyPoDomain = "x-vise_menu"
)
type PoResource struct {
*MenuResource
- path string
+ path string
defaultLanguage lang.Language
- tr map[string]*gotext.Locale
+ tr map[string]*gotext.Locale
}
func NewPoResource(defaultLanguage lang.Language, path string) *PoResource {
- o := &PoResource {
- MenuResource: NewMenuResource(),
- path: path,
+ o := &PoResource{
+ MenuResource: NewMenuResource(),
+ path: path,
defaultLanguage: defaultLanguage,
- tr: make(map[string]*gotext.Locale),
+ tr: make(map[string]*gotext.Locale),
}
return o.WithLanguage(defaultLanguage)
}
-func(p *PoResource) WithLanguage(ln lang.Language) *PoResource {
+func (p *PoResource) WithLanguage(ln lang.Language) *PoResource {
o := gotext.NewLocale(p.path, ln.Code)
o.AddDomain(PoDomain)
if ln.Code == p.defaultLanguage.Code {
@@ -42,7 +42,7 @@ func(p *PoResource) WithLanguage(ln lang.Language) *PoResource {
return p
}
-func(p *PoResource) get(ctx context.Context, sym string, domain string, menu bool) (string, error) {
+func (p *PoResource) get(ctx context.Context, sym string, domain string, menu bool) (string, error) {
s := sym
ln, ok := lang.LanguageFromContext(ctx)
if !ok {
@@ -63,10 +63,10 @@ func(p *PoResource) get(ctx context.Context, sym string, domain string, menu boo
return s, nil
}
-func(p *PoResource) GetMenu(ctx context.Context, sym string) (string, error) {
+func (p *PoResource) GetMenu(ctx context.Context, sym string) (string, error) {
return p.get(ctx, sym, PoDomain, true)
}
-func(p *PoResource) GetTemplate(ctx context.Context, sym string) (string, error) {
+func (p *PoResource) GetTemplate(ctx context.Context, sym string) (string, error) {
return p.get(ctx, sym, PoDomain, false)
}
diff --git a/resource/gettext_test.go b/resource/gettext_test.go
@@ -4,8 +4,8 @@ import (
"context"
"testing"
- "git.defalsify.org/vise.git/testdata/testlocale"
"git.defalsify.org/vise.git/lang"
+ "git.defalsify.org/vise.git/testdata/testlocale"
)
func TestPoGetNotExist(t *testing.T) {
@@ -64,7 +64,6 @@ func TestPoGet(t *testing.T) {
t.Fatalf("expected 'foo', got '%s'", s)
}
-
// eng now
ctx = context.WithValue(context.Background(), "Language", ln)
diff --git a/resource/resource.go b/resource/resource.go
@@ -5,7 +5,6 @@ import (
"fmt"
)
-
// Result contains the results of an external code operation.
type Result struct {
// content value for symbol after execution.
@@ -24,12 +23,16 @@ type Result struct {
//
// The implementer MUST NOT modify state flags or cache inside the function. The resource.Result object MUST be used instead.
type EntryFunc func(ctx context.Context, nodeSym string, input []byte) (Result, error)
+
// CodeFunc is the function signature for retrieving bytecode for a given symbol.
type CodeFunc func(ctx context.Context, nodeSym string) ([]byte, error)
+
// MenuFunc is the function signature for retrieving menu symbol resolution.
type MenuFunc func(ctx context.Context, menuSym string) (string, error)
+
// TemplateFunc is the function signature for retrieving a render template for a given symbol.
type TemplateFunc func(ctx context.Context, nodeSym string) (string, error)
+
// FuncForFunc is a function that returns an EntryFunc associated with a LOAD instruction symbol.
type FuncForFunc func(ctx context.Context, loadSym string) (EntryFunc, error)
@@ -51,12 +54,12 @@ type Resource interface {
// MenuResource contains the base definition for building Resource implementations.
type MenuResource struct {
- sinkValues []string
- codeFunc CodeFunc
+ sinkValues []string
+ codeFunc CodeFunc
templateFunc TemplateFunc
- menuFunc MenuFunc
- funcFunc FuncForFunc
- fns map[string]EntryFunc
+ menuFunc MenuFunc
+ funcFunc FuncForFunc
+ fns map[string]EntryFunc
}
var (
@@ -81,51 +84,51 @@ func NewMenuResource() *MenuResource {
}
// WithCodeGetter sets the code symbol resolver method.
-func(m *MenuResource) WithCodeGetter(codeGetter CodeFunc) *MenuResource {
+func (m *MenuResource) WithCodeGetter(codeGetter CodeFunc) *MenuResource {
m.codeFunc = codeGetter
return m
}
// WithEntryGetter sets the content symbol resolver getter method.
-func(m *MenuResource) WithEntryFuncGetter(entryFuncGetter FuncForFunc) *MenuResource {
+func (m *MenuResource) WithEntryFuncGetter(entryFuncGetter FuncForFunc) *MenuResource {
m.funcFunc = entryFuncGetter
return m
}
// WithTemplateGetter sets the template symbol resolver method.
-func(m *MenuResource) WithTemplateGetter(templateGetter TemplateFunc) *MenuResource {
+func (m *MenuResource) WithTemplateGetter(templateGetter TemplateFunc) *MenuResource {
m.templateFunc = templateGetter
return m
}
// WithMenuGetter sets the menu symbol resolver method.
-func(m *MenuResource) WithMenuGetter(menuGetter MenuFunc) *MenuResource {
+func (m *MenuResource) WithMenuGetter(menuGetter MenuFunc) *MenuResource {
m.menuFunc = menuGetter
return m
}
// FuncFor implements Resource interface.
-func(m *MenuResource) FuncFor(ctx context.Context, sym string) (EntryFunc, error) {
+func (m *MenuResource) FuncFor(ctx context.Context, sym string) (EntryFunc, error) {
return m.funcFunc(ctx, sym)
}
// GetCode implements Resource interface.
-func(m *MenuResource) GetCode(ctx context.Context, sym string) ([]byte, error) {
+func (m *MenuResource) GetCode(ctx context.Context, sym string) ([]byte, error) {
return m.codeFunc(ctx, sym)
}
// GetTemplate implements Resource interface.
-func(m *MenuResource) GetTemplate(ctx context.Context, sym string) (string, error) {
+func (m *MenuResource) GetTemplate(ctx context.Context, sym string) (string, error) {
return m.templateFunc(ctx, sym)
}
// GetMenu implements Resource interface.
-func(m *MenuResource) GetMenu(ctx context.Context, sym string) (string, error) {
+func (m *MenuResource) GetMenu(ctx context.Context, sym string) (string, error) {
return m.menuFunc(ctx, sym)
}
// AddLocalFunc associates a handler function with a external function symbol to be returned by FallbackFunc.
-func(m *MenuResource) AddLocalFunc(sym string, fn EntryFunc) {
+func (m *MenuResource) AddLocalFunc(sym string, fn EntryFunc) {
if m.fns == nil {
m.fns = make(map[string]EntryFunc)
}
@@ -133,7 +136,7 @@ func(m *MenuResource) AddLocalFunc(sym string, fn EntryFunc) {
}
// FallbackFunc returns the default handler function for a given external function symbol.
-func(m *MenuResource) FallbackFunc(ctx context.Context, sym string) (EntryFunc, error) {
+func (m *MenuResource) FallbackFunc(ctx context.Context, sym string) (EntryFunc, error) {
fn, ok := m.fns[sym]
if !ok {
return nil, fmt.Errorf("unknown function: %s", sym)
@@ -142,6 +145,6 @@ func(m *MenuResource) FallbackFunc(ctx context.Context, sym string) (EntryFunc,
}
// Close implements the Resource interface.
-func(m *MenuResource) Close(ctx context.Context) error {
+func (m *MenuResource) Close(ctx context.Context) error {
return nil
}
diff --git a/resource/resource_test.go b/resource/resource_test.go
@@ -8,16 +8,16 @@ import (
func codeGet(ctx context.Context, nodeSym string) ([]byte, error) {
switch nodeSym {
- case "bar":
- return []byte("deafbeef"), nil
+ case "bar":
+ return []byte("deafbeef"), nil
}
return nil, errors.New("unknown code")
}
func menuGet(ctx context.Context, menuSym string) (string, error) {
switch menuSym {
- case "baz":
- return "xyzzy", nil
+ case "baz":
+ return "xyzzy", nil
}
return "", errors.New("unknown code")
@@ -25,8 +25,8 @@ func menuGet(ctx context.Context, menuSym string) (string, error) {
func templateGet(ctx context.Context, nodeSym string) (string, error) {
switch nodeSym {
- case "tinkywinky":
- return "inky pinky {{.foo}} blinky clyde", nil
+ case "tinkywinky":
+ return "inky pinky {{.foo}} blinky clyde", nil
}
return "", errors.New("unknown code")
}
@@ -39,14 +39,12 @@ func entryFunc(ctx context.Context, nodeSym string, input []byte) (Result, error
func funcGet(ctx context.Context, loadSym string) (EntryFunc, error) {
switch loadSym {
- case "dipsy":
- return entryFunc, nil
+ case "dipsy":
+ return entryFunc, nil
}
return nil, errors.New("unknown code")
}
-
-
func TestMenuResourceSetters(t *testing.T) {
var err error
ctx := context.Background()
diff --git a/state/debug.go b/state/debug.go
@@ -27,26 +27,26 @@ func newFlagDebugger() flagDebugger {
return fd
}
-func(fd *flagDebugger) register(flag uint32, name string) {
+func (fd *flagDebugger) register(flag uint32, name string) {
fd.flagStrings[flag] = name
}
-func(fd *flagDebugger) Register(flag uint32, name string) error {
- if (flag < 8) {
+func (fd *flagDebugger) Register(flag uint32, name string) error {
+ if flag < 8 {
return fmt.Errorf("flag %v is not definable by user", flag)
}
fd.register(flag, name)
return nil
}
-func(fd *flagDebugger) AsString(flags []byte, length uint32) string {
+func (fd *flagDebugger) AsString(flags []byte, length uint32) string {
return strings.Join(fd.AsList(flags, length), ",")
}
-func(fd *flagDebugger) AsList(flags []byte, length uint32) []string {
+func (fd *flagDebugger) AsList(flags []byte, length uint32) []string {
var r []string
var i uint32
- for i = 0; i < length + 8; i++ {
+ for i = 0; i < length+8; i++ {
if getFlag(i, flags) {
v, ok := fd.flagStrings[i]
if !ok {
diff --git a/state/debug_test.go b/state/debug_test.go
@@ -28,7 +28,7 @@ func TestDebugFlagString(t *testing.T) {
}
flags := []byte{0x06, 0x19}
r := FlagDebugger.AsString(flags, 5)
- expect := "INTERNAL_INMATCH(1),INTERNAL_WAIT(2),FOO(8),BAZ(11),?unreg?(12)"
+ expect := "INTERNAL_INMATCH(1),INTERNAL_WAIT(2),FOO(8),BAZ(11),?unreg?(12)"
if r != expect {
t.Fatalf("expected '%s', got '%s'", expect, r)
}
@@ -51,4 +51,3 @@ func TestDebugState(t *testing.T) {
t.Fatalf("expected '%s', got '%s'", expect, r)
}
}
-
diff --git a/state/flag.go b/state/flag.go
@@ -4,7 +4,7 @@ const (
// Currently reading input. Set by first INCMP instruction encontered.
FLAG_READIN = iota
// Input matched a selector. Set by first INCMP matching input.
- FLAG_INMATCH
+ FLAG_INMATCH
// The instruction HALT has been encountered.
FLAG_WAIT
// The last LOAD or RELOAD executed returneded an error.
@@ -14,7 +14,7 @@ const (
// Not currently in use.
FLAG_RESERVED
// VM execution is blocked.
- FLAG_TERMINATE
+ FLAG_TERMINATE
// The return value from a LOAD or RELOAD is a new language selection.
FLAG_LANG
// User-defined flags start here.
diff --git a/state/state.go b/state/state.go
@@ -13,7 +13,7 @@ const (
var (
IndexError = fmt.Errorf("already at first index")
- MaxLevel = 128
+ MaxLevel = 128
)
// State holds the command stack, error condition of a unique execution session.
@@ -32,16 +32,16 @@ var (
//
// 8 first flags are reserved.
type State struct {
- Code []byte // Pending bytecode to execute
- ExecPath []string // Command symbols stack
- BitSize uint32 // Size of (32-bit capacity) bit flag byte array
- SizeIdx uint16 // Lateral page browse index in current frame
- Flags []byte // Error state
- Moves uint32 // Number of times navigation has been performed
+ Code []byte // Pending bytecode to execute
+ ExecPath []string // Command symbols stack
+ BitSize uint32 // Size of (32-bit capacity) bit flag byte array
+ SizeIdx uint16 // Lateral page browse index in current frame
+ Flags []byte // Error state
+ Moves uint32 // Number of times navigation has been performed
Language *lang.Language // Language selector for rendering
- input []byte // Last input
- debug bool // Make string representation more human friendly
- invalid bool
+ input []byte // Last input
+ debug bool // Make string representation more human friendly
+ invalid bool
lastMove uint8
}
@@ -60,14 +60,14 @@ func toByteSize(BitSize uint32) uint8 {
// Invalidate marks a state as invalid.
//
// An invalid state should not be persisted or propagated
-func(st *State) Invalidate() {
+func (st *State) Invalidate() {
st.invalid = true
}
// Invalid returns true if state is invalid.
//
// An invalid state should not be persisted or propagated
-func(st *State) Invalid() bool {
+func (st *State) Invalid() bool {
return st.invalid
}
@@ -86,7 +86,7 @@ func NewState(BitSize uint32) *State {
}
byteSize := toByteSize(BitSize + 8)
if byteSize > 0 {
- st.Flags = make([]byte, byteSize)
+ st.Flags = make([]byte, byteSize)
} else {
st.Flags = []byte{}
}
@@ -94,7 +94,7 @@ func NewState(BitSize uint32) *State {
}
// UseDebug enables rendering of registered string values of state flags in the string representation.
-func(st *State) UseDebug() {
+func (st *State) UseDebug() {
st.debug = true
}
@@ -103,8 +103,8 @@ func(st *State) UseDebug() {
// Returns true if bit state was changed.
//
// Fails if bitindex is out of range.
-func(st *State) SetFlag(bitIndex uint32) bool {
- if bitIndex + 1 > st.BitSize {
+func (st *State) SetFlag(bitIndex uint32) bool {
+ if bitIndex+1 > st.BitSize {
panic(fmt.Sprintf("bit index %v is out of range of bitfield size %v", bitIndex, st.BitSize))
}
r := getFlag(bitIndex, st.Flags)
@@ -113,19 +113,18 @@ func(st *State) SetFlag(bitIndex uint32) bool {
}
byteIndex := bitIndex / 8
localBitIndex := bitIndex % 8
- b := st.Flags[byteIndex]
+ b := st.Flags[byteIndex]
st.Flags[byteIndex] = b | (1 << localBitIndex)
return true
}
-
// ResetFlag resets the flag at the given bit field index.
//
// Returns true if bit state was changed.
//
// Fails if bitindex is out of range.
-func(st *State) ResetFlag(bitIndex uint32) bool {
- if bitIndex + 1 > st.BitSize {
+func (st *State) ResetFlag(bitIndex uint32) bool {
+ if bitIndex+1 > st.BitSize {
panic(fmt.Sprintf("bit index %v is out of range of bitfield size %v", bitIndex, st.BitSize))
}
r := getFlag(bitIndex, st.Flags)
@@ -134,7 +133,7 @@ func(st *State) ResetFlag(bitIndex uint32) bool {
}
byteIndex := bitIndex / 8
localBitIndex := bitIndex % 8
- b := st.Flags[byteIndex]
+ b := st.Flags[byteIndex]
st.Flags[byteIndex] = b & (^(1 << localBitIndex))
return true
}
@@ -142,20 +141,20 @@ func(st *State) ResetFlag(bitIndex uint32) bool {
// GetFlag returns the state of the flag at the given bit field index.
//
// Fails if bit field index is out of range.
-func(st *State) GetFlag(bitIndex uint32) bool {
- if bitIndex + 1 > st.BitSize {
+func (st *State) GetFlag(bitIndex uint32) bool {
+ if bitIndex+1 > st.BitSize {
panic(fmt.Sprintf("bit index %v is out of range of bitfield size %v", bitIndex, st.BitSize))
}
return getFlag(bitIndex, st.Flags)
}
// FlagBitSize reports the amount of bits available in the bit field index.
-func(st *State) FlagBitSize() uint32 {
+func (st *State) FlagBitSize() uint32 {
return st.BitSize
}
// FlagBitSize reports the amount of bits available in the bit field index.
-func(st *State) FlagByteSize() uint8 {
+func (st *State) FlagByteSize() uint8 {
return uint8(len(st.Flags))
}
@@ -164,7 +163,7 @@ func(st *State) FlagByteSize() uint8 {
// The flag is specified given its bit index in the bit field.
//
// If matchSet is set, a positive result will be returned if the flag is set.
-func(st *State) MatchFlag(sig uint32, matchSet bool) bool {
+func (st *State) MatchFlag(sig uint32, matchSet bool) bool {
r := st.GetFlag(sig)
return matchSet == r
}
@@ -172,7 +171,7 @@ func(st *State) MatchFlag(sig uint32, matchSet bool) bool {
// GetIndex scans a byte slice in same order as in storage, and returns the index of the first set bit.
//
// If the given byte slice is too small for the bit field bitsize, the check will terminate at end-of-data without error.
-func(st *State) GetIndex(flags []byte) bool {
+func (st *State) GetIndex(flags []byte) bool {
var globalIndex uint32
if st.BitSize == 0 {
return false
@@ -190,11 +189,11 @@ func(st *State) GetIndex(flags []byte) bool {
return true
}
globalIndex += 1
- if globalIndex % 8 == 0 {
+ if globalIndex%8 == 0 {
byteIndex += 1
localIndex = 0
if byteIndex > (l - 1) {
- return false
+ return false
}
} else {
localIndex += 1
@@ -204,7 +203,7 @@ func(st *State) GetIndex(flags []byte) bool {
}
// Where returns the current active rendering symbol.
-func(st *State) Where() (string, uint16) {
+func (st *State) Where() (string, uint16) {
if len(st.ExecPath) == 0 {
return "", 0
}
@@ -213,17 +212,17 @@ func(st *State) Where() (string, uint16) {
}
// Lateral returns true if the last state move was Next() or Previous()
-func(st *State) Lateral() bool {
- return st.lastMove & 6 > 0
+func (st *State) Lateral() bool {
+ return st.lastMove&6 > 0
}
// Back returns true if the last state move was Up()
-func(st *State) Back() bool {
- return st.lastMove & 1 > 0
+func (st *State) Back() bool {
+ return st.lastMove&1 > 0
}
// Next moves to the next sink page index.
-func(st *State) Next() (uint16, error) {
+func (st *State) Next() (uint16, error) {
if len(st.ExecPath) == 0 {
return 0, fmt.Errorf("state root node not yet defined")
}
@@ -235,14 +234,14 @@ func(st *State) Next() (uint16, error) {
return st.SizeIdx, nil
}
-func(st *State) Same() {
+func (st *State) Same() {
st.Moves += 1
}
// Previous moves to the next sink page index.
//
// Fails if try to move beyond index 0.
-func(st *State) Previous() (uint16, error) {
+func (st *State) Previous() (uint16, error) {
if len(st.ExecPath) == 0 {
return 0, fmt.Errorf("state root node not yet defined")
}
@@ -260,14 +259,14 @@ func(st *State) Previous() (uint16, error) {
// Sides informs the caller which index page options will currently succeed.
//
// Two values are returned, for the "next" and "previous" options in that order. A false value means the option is not available in the current state.
-func(st *State) Sides() (bool, bool) {
+func (st *State) Sides() (bool, bool) {
if len(st.ExecPath) == 0 {
return false, false
}
next := true
logg.Tracef("sides", "index", st.SizeIdx)
if st.SizeIdx == 0 {
- return next, false
+ return next, false
}
return next, true
}
@@ -275,7 +274,7 @@ func(st *State) Sides() (bool, bool) {
// Top returns true if currently at topmode node.
//
// Fails if first Down() was never called.
-func(st *State) Top() (bool, error) {
+func (st *State) Top() (bool, error) {
if len(st.ExecPath) == 0 {
return false, fmt.Errorf("state root node not yet defined")
}
@@ -285,7 +284,7 @@ func(st *State) Top() (bool, error) {
// Down adds the given symbol to the command stack.
//
// Clears mapping and sink.
-func(st *State) Down(input string) error {
+func (st *State) Down(input string) error {
var n uint16
l := len(st.ExecPath)
if l > MaxLevel {
@@ -312,7 +311,7 @@ func(st *State) Down(input string) error {
// Clears mapping and sink.
//
// Fails if called at top frame.
-func(st *State) Up() (string, error) {
+func (st *State) Up() (string, error) {
l := len(st.ExecPath)
if l == 0 {
return "", fmt.Errorf("exit called beyond top frame")
@@ -331,32 +330,32 @@ func(st *State) Up() (string, error) {
}
// Depth returns the current call stack depth.
-func(st *State) Depth() int {
- return len(st.ExecPath)-1
+func (st *State) Depth() int {
+ return len(st.ExecPath) - 1
}
// Appendcode adds the given bytecode to the end of the existing code.
-func(st *State) AppendCode(b []byte) error {
+func (st *State) AppendCode(b []byte) error {
st.Code = append(st.Code, b...)
logg.Debugf("code changed (append)", "code", b)
return nil
}
// SetCode replaces the current bytecode with the given bytecode.
-func(st *State) SetCode(b []byte) {
+func (st *State) SetCode(b []byte) {
logg.Debugf("code changed (set)", "code", b)
st.Code = b
}
// Get the remaning cached bytecode
-func(st *State) GetCode() ([]byte, error) {
+func (st *State) GetCode() ([]byte, error) {
b := st.Code
st.Code = []byte{}
return b, nil
}
// GetInput gets the most recent client input.
-func(st *State) GetInput() ([]byte, error) {
+func (st *State) GetInput() ([]byte, error) {
if st.input == nil {
return nil, fmt.Errorf("no input has been set")
}
@@ -364,7 +363,7 @@ func(st *State) GetInput() ([]byte, error) {
}
// SetInput is used to record the latest client input.
-func(st *State) SetInput(input []byte) error {
+func (st *State) SetInput(input []byte) error {
l := len(input)
if l > INPUT_LIMIT {
return fmt.Errorf("input size %v too large (limit %v)", l, 255)
@@ -374,7 +373,7 @@ func(st *State) SetInput(input []byte) error {
}
// Reset re-initializes the state to run from top node with accumulated client state.
-func(st *State) Restart() error {
+func (st *State) Restart() error {
var err error
if len(st.ExecPath) == 0 {
return fmt.Errorf("Restart called but no root set")
@@ -389,7 +388,7 @@ func(st *State) Restart() error {
}
// SetLanguage validates and sets language according to the given ISO639 language code.
-func(st *State) SetLanguage(code string) error {
+func (st *State) SetLanguage(code string) error {
if code == "" {
st.Language = nil
}
@@ -402,16 +401,16 @@ func(st *State) SetLanguage(code string) error {
return nil
}
-func(st *State) CloneEmpty() *State {
+func (st *State) CloneEmpty() *State {
flagCount := st.BitSize - 8
return NewState(flagCount)
}
// String implements String interface
-func(st *State) String() string {
+func (st *State) String() string {
var flags string
if st.debug {
- flags = FlagDebugger.AsString(st.Flags, st.BitSize - 8)
+ flags = FlagDebugger.AsString(st.Flags, st.BitSize-8)
} else {
flags = fmt.Sprintf("0x%x", st.Flags)
}
@@ -425,6 +424,6 @@ func(st *State) String() string {
}
// initializes all flags not in control of client.
-func(st *State) resetBaseFlags() {
+func (st *State) resetBaseFlags() {
st.Flags[0] = 0
}
diff --git a/state/state_test.go b/state/state_test.go
@@ -5,7 +5,7 @@ import (
"testing"
)
-// Check creation
+// Check creation
func TestNewState(t *testing.T) {
st := NewState(5)
if len(st.Flags) != 2 {
@@ -20,7 +20,7 @@ func TestNewState(t *testing.T) {
t.Fatalf("invalid state flag length: %v", len(st.Flags))
}
v := st.FlagBitSize()
- x := uint32(17+8)
+ x := uint32(17 + 8)
if v != x {
t.Fatalf("expected %d, get %d", x, v)
}
@@ -406,8 +406,8 @@ func TestStateMovement(t *testing.T) {
func TestStateMaxMovement(t *testing.T) {
MaxLevel = 3
st := NewState(0)
- st.Down("inky")
- st.Down("pinky")
+ st.Down("inky")
+ st.Down("pinky")
st.Down("blinky")
st.Down("clyde")
defer func() {
diff --git a/testdata/testdata.go b/testdata/testdata.go
@@ -8,22 +8,22 @@ import (
"git.defalsify.org/vise.git/db"
fsdb "git.defalsify.org/vise.git/db/fs"
- "git.defalsify.org/vise.git/resource"
"git.defalsify.org/vise.git/logging"
+ "git.defalsify.org/vise.git/resource"
)
var (
- ctx = context.Background()
+ ctx = context.Background()
store = fsdb.NewFsDb()
- out = outNew
- logg = logging.NewVanilla().WithDomain("testdata")
+ out = outNew
+ logg = logging.NewVanilla().WithDomain("testdata")
)
type echoFunc struct {
v string
}
-func(e *echoFunc) get(ctx context.Context, nodeSym string, input []byte) (resource.Result, error) {
+func (e *echoFunc) get(ctx context.Context, nodeSym string, input []byte) (resource.Result, error) {
return resource.Result{
Content: e.v,
}, nil
@@ -88,7 +88,6 @@ func Generate() (string, error) {
return dir, err
}
-
// Generate outputs bytecode, templates and content symbols to a specified directory.
//
// The directory must exist, and must not have been used already in the same code execution.
diff --git a/testdata/testdata_legacy.go b/testdata/testdata_legacy.go
@@ -16,7 +16,7 @@ type genFunc func() error
var (
BaseDir = testdataloader.GetBasePath()
DataDir = ""
- dirLock = false
+ dirLock = false
)
func outLegacy(sym string, b []byte, tpl string, data map[string]string) error {
@@ -223,7 +223,6 @@ func GenerateLegacy() (string, error) {
return dir, err
}
-
// Generate outputs bytecode, templates and content symbols to a specified directory.
//
// The directory must exist, and must not have been used already in the same code execution.
diff --git a/testdata/testlocale/eng/x-vise.po b/testdata/testlocale/eng/x-vise.po
@@ -0,0 +1,9 @@
+msgid ""
+msgstr ""
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Language: eng\n"
+
+msgid ""
+ "bar"
+msgstr ""
+ "baz"
diff --git a/testdata/testlocale/eng/x-vise_menu.po b/testdata/testlocale/eng/x-vise_menu.po
@@ -0,0 +1,14 @@
+msgid ""
+msgstr ""
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Language: eng\n"
+
+msgid ""
+ "inky"
+msgstr ""
+ "pinky"
+
+msgid ""
+ "foo"
+msgstr ""
+ "foobar"
diff --git a/testdata/testlocale/nor/default.po b/testdata/testlocale/nor/default.po
@@ -0,0 +1,9 @@
+msgid ""
+msgstr ""
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Language: nor\n"
+
+msgid ""
+ "foobar"
+msgstr ""
+ "fu"
diff --git a/testdata/testlocale/nor/x-vise.po b/testdata/testlocale/nor/x-vise.po
@@ -0,0 +1,9 @@
+msgid ""
+msgstr ""
+ "Content-Type: text/plain; charset=UTF-8\n"
+ "Language: eng\n"
+
+msgid ""
+ "baz"
+msgstr ""
+ "bass"
diff --git a/vm/debug.go b/vm/debug.go
@@ -7,21 +7,21 @@ import (
)
type ParseHandler struct {
- Catch func(string, uint32, bool) error
- Croak func(uint32, bool) error
- Load func(string, uint32) error
+ Catch func(string, uint32, bool) error
+ Croak func(uint32, bool) error
+ Load func(string, uint32) error
Reload func(string) error
- Map func(string) error
- Move func(string) error
- Halt func() error
- InCmp func(string, string) error
- MOut func(string, string) error
- MSink func() error
- MNext func(string, string) error
- MPrev func(string, string) error
- cur string
- n int
- w io.Writer
+ Map func(string) error
+ Move func(string) error
+ Halt func() error
+ InCmp func(string, string) error
+ MOut func(string, string) error
+ MSink func() error
+ MNext func(string, string) error
+ MPrev func(string, string) error
+ cur string
+ n int
+ w io.Writer
}
func NewParseHandler() *ParseHandler {
diff --git a/vm/debug_test.go b/vm/debug_test.go
@@ -4,7 +4,6 @@ import (
"testing"
)
-
func TestToString(t *testing.T) {
var b []byte
var r string
@@ -52,7 +51,7 @@ func TestToString(t *testing.T) {
t.Fatalf("expected:\n\t%v\ngot:\n\t%v", expect, r)
}
- b = NewLine(nil, MAP, []string{"inky_pinky"}, nil, nil)
+ b = NewLine(nil, MAP, []string{"inky_pinky"}, nil, nil)
r, err = ph.ToString(b)
if err != nil {
t.Fatal(err)
@@ -62,7 +61,7 @@ func TestToString(t *testing.T) {
t.Fatalf("expected:\n\t%v\ngot:\n\t%v", expect, r)
}
- b = NewLine(nil, MOVE, []string{"blinky_clyde"}, nil, nil)
+ b = NewLine(nil, MOVE, []string{"blinky_clyde"}, nil, nil)
r, err = ph.ToString(b)
if err != nil {
t.Fatal(err)
@@ -72,7 +71,7 @@ func TestToString(t *testing.T) {
t.Fatalf("expected:\n\t%v\ngot:\n\t%v", expect, r)
}
- b = NewLine(nil, HALT, nil, nil, nil)
+ b = NewLine(nil, HALT, nil, nil, nil)
r, err = ph.ToString(b)
if err != nil {
t.Fatal(err)
@@ -82,7 +81,7 @@ func TestToString(t *testing.T) {
t.Fatalf("expected:\n\t%v\ngot:\n\t%v", expect, r)
}
- b = NewLine(nil, INCMP, []string{"13", "baz"}, nil, nil)
+ b = NewLine(nil, INCMP, []string{"13", "baz"}, nil, nil)
r, err = ph.ToString(b)
if err != nil {
t.Fatal(err)
@@ -92,7 +91,7 @@ func TestToString(t *testing.T) {
t.Fatalf("expected:\n\t%v\ngot:\n\t%v", expect, r)
}
- b = NewLine(nil, MNEXT, []string{"11", "nextmenu"}, nil, nil)
+ b = NewLine(nil, MNEXT, []string{"11", "nextmenu"}, nil, nil)
r, err = ph.ToString(b)
if err != nil {
t.Fatal(err)
@@ -103,7 +102,7 @@ func TestToString(t *testing.T) {
t.Fatalf("expected:\n\t%v\ngot:\n\t%v", expect, r)
}
- b = NewLine(nil, MPREV, []string{"222", "previous menu item"}, nil, nil)
+ b = NewLine(nil, MPREV, []string{"222", "previous menu item"}, nil, nil)
r, err = ph.ToString(b)
if err != nil {
t.Fatal(err)
@@ -114,7 +113,7 @@ func TestToString(t *testing.T) {
t.Fatalf("expected:\n\t%v\ngot:\n\t%v", expect, r)
}
- b = NewLine(nil, MOUT, []string{"1", "foo"}, nil, nil)
+ b = NewLine(nil, MOUT, []string{"1", "foo"}, nil, nil)
r, err = ph.ToString(b)
if err != nil {
t.Fatal(err)
@@ -125,7 +124,7 @@ func TestToString(t *testing.T) {
t.Fatalf("expected:\n\t%v\ngot:\n\t%v", expect, r)
}
- b = NewLine(nil, MSINK, nil, nil, nil) //[]uint8{0x42, 0x2a})
+ b = NewLine(nil, MSINK, nil, nil, nil) //[]uint8{0x42, 0x2a})
r, err = ph.ToString(b)
if err != nil {
t.Fatal(err)
diff --git a/vm/input.go b/vm/input.go
@@ -12,11 +12,11 @@ import (
var (
inputRegexStr = "^\\+?[a-zA-Z0-9].*$"
- inputRegex = regexp.MustCompile(inputRegexStr)
- ctrlRegexStr = "^[><_^.]$"
- ctrlRegex = regexp.MustCompile(ctrlRegexStr)
- symRegexStr = "^[a-zA-Z0-9][a-zA-Z0-9_]+$"
- symRegex = regexp.MustCompile(symRegexStr)
+ inputRegex = regexp.MustCompile(inputRegexStr)
+ ctrlRegexStr = "^[><_^.]$"
+ ctrlRegex = regexp.MustCompile(ctrlRegexStr)
+ symRegexStr = "^[a-zA-Z0-9][a-zA-Z0-9_]+$"
+ symRegex = regexp.MustCompile(symRegexStr)
)
var (
@@ -34,7 +34,7 @@ func NewInvalidInputError(input string) error {
}
// Error implements the Error interface.
-func(e InvalidInputError) Error() string {
+func (e InvalidInputError) Error() string {
return fmt.Sprintf("invalid input: '%s'", e.input)
}
@@ -102,7 +102,7 @@ func valid(target []byte) bool {
ok = true
}
}
- return ok
+ return ok
}
// CheckTarget tests whether the navigation state transition is available in the current state.
diff --git a/vm/input_test.go b/vm/input_test.go
@@ -4,8 +4,8 @@ import (
"context"
"testing"
- "git.defalsify.org/vise.git/state"
"git.defalsify.org/vise.git/cache"
+ "git.defalsify.org/vise.git/state"
)
func TestPhoneInput(t *testing.T) {
diff --git a/vm/opcodes.go b/vm/opcodes.go
@@ -6,53 +6,52 @@ type Opcode uint16
// VM Opcodes
const (
- NOOP = 0
- CATCH = 1
- CROAK = 2
- LOAD = 3
+ NOOP = 0
+ CATCH = 1
+ CROAK = 2
+ LOAD = 3
RELOAD = 4
- MAP = 5
- MOVE = 6
- HALT = 7
- INCMP = 8
- MSINK = 9
- MOUT = 10
- MNEXT = 11
- MPREV = 12
- _MAX = 12
+ MAP = 5
+ MOVE = 6
+ HALT = 7
+ INCMP = 8
+ MSINK = 9
+ MOUT = 10
+ MNEXT = 11
+ MPREV = 12
+ _MAX = 12
)
var (
OpcodeString = map[Opcode]string{
- NOOP: "NOOP",
- CATCH: "CATCH",
- CROAK: "CROAK",
- LOAD: "LOAD",
+ NOOP: "NOOP",
+ CATCH: "CATCH",
+ CROAK: "CROAK",
+ LOAD: "LOAD",
RELOAD: "RELOAD",
- MAP: "MAP",
- MOVE: "MOVE",
- HALT: "HALT",
- INCMP: "INCMP",
- MSINK: "MSINK",
- MOUT: "MOUT",
- MNEXT: "MNEXT",
- MPREV: "MPREV",
+ MAP: "MAP",
+ MOVE: "MOVE",
+ HALT: "HALT",
+ INCMP: "INCMP",
+ MSINK: "MSINK",
+ MOUT: "MOUT",
+ MNEXT: "MNEXT",
+ MPREV: "MPREV",
}
- OpcodeIndex = map[string]Opcode {
- "NOOP": NOOP,
- "CATCH": CATCH,
- "CROAK": CROAK,
- "LOAD": LOAD,
+ OpcodeIndex = map[string]Opcode{
+ "NOOP": NOOP,
+ "CATCH": CATCH,
+ "CROAK": CROAK,
+ "LOAD": LOAD,
"RELOAD": RELOAD,
- "MAP": MAP,
- "MOVE": MOVE,
- "HALT": HALT,
- "INCMP": INCMP,
- "MSINK": MSINK,
- "MOUT": MOUT,
- "MNEXT": MNEXT,
- "MPREV": MPREV,
+ "MAP": MAP,
+ "MOVE": MOVE,
+ "HALT": HALT,
+ "INCMP": INCMP,
+ "MSINK": MSINK,
+ "MOUT": MOUT,
+ "MNEXT": MNEXT,
+ "MPREV": MPREV,
}
-
)
diff --git a/vm/runner.go b/vm/runner.go
@@ -13,9 +13,9 @@ import (
// ExternalCodeError indicates an error that occurred when resolving an external code symbol (LOAD, RELOAD).
type ExternalCodeError struct {
- sym string
+ sym string
code int
- err error
+ err error
}
// NewExternalCodeError creates a new ExternalCodeError.
@@ -26,13 +26,13 @@ func NewExternalCodeError(sym string, err error) *ExternalCodeError {
}
}
-func(e *ExternalCodeError) WithCode(code int) *ExternalCodeError {
+func (e *ExternalCodeError) WithCode(code int) *ExternalCodeError {
e.code = code
return e
}
// Error implements the Error interface.
-func(e ExternalCodeError) Error() string {
+func (e ExternalCodeError) Error() string {
logg.Errorf("external code error: %v", e.err)
return fmt.Sprintf("error %v:%v", e.sym, e.code)
}
@@ -40,22 +40,22 @@ func(e ExternalCodeError) Error() string {
// Vm holds sub-components mutated by the vm execution.
// TODO: Renderer should be passed to avoid proxy methods not strictly related to vm operation
type Vm struct {
- st *state.State // Navigation and error states.
- rs resource.Resource // Retrieves content, code, and templates for symbols.
- ca cache.Memory // Loaded content.
- mn *render.Menu // Menu component of page.
- sizer *render.Sizer // Apply size constraints to output.
- pg *render.Page // Render outputs with menues to size constraints
- menuSeparator string // Passed to Menu.WithSeparator if not empty
+ st *state.State // Navigation and error states.
+ rs resource.Resource // Retrieves content, code, and templates for symbols.
+ ca cache.Memory // Loaded content.
+ mn *render.Menu // Menu component of page.
+ sizer *render.Sizer // Apply size constraints to output.
+ pg *render.Page // Render outputs with menues to size constraints
+ menuSeparator string // Passed to Menu.WithSeparator if not empty
}
// NewVm creates a new Vm.
func NewVm(st *state.State, rs resource.Resource, ca cache.Memory, sizer *render.Sizer) *Vm {
vmi := &Vm{
- st: st,
- rs: rs,
- ca: ca,
- pg: render.NewPage(ca, rs),
+ st: st,
+ rs: rs,
+ ca: ca,
+ pg: render.NewPage(ca, rs),
sizer: sizer,
}
vmi.Reset()
@@ -65,13 +65,13 @@ func NewVm(st *state.State, rs resource.Resource, ca cache.Memory, sizer *render
// WithMenuSeparator is a chainable function that sets the separator string to use
// in the menu renderer.
-func(vmi *Vm) WithMenuSeparator(sep string) *Vm {
+func (vmi *Vm) WithMenuSeparator(sep string) *Vm {
vmi.menuSeparator = sep
return vmi
}
// Reset re-initializes sub-components for output rendering.
-func(vmi *Vm) Reset() {
+func (vmi *Vm) Reset() {
vmi.mn = render.NewMenu()
if vmi.menuSeparator != "" {
vmi.mn = vmi.mn.WithSeparator(vmi.menuSeparator)
@@ -79,7 +79,7 @@ func(vmi *Vm) Reset() {
vmi.pg.Reset()
vmi.pg = vmi.pg.WithMenu(vmi.mn)
if vmi.sizer != nil {
- vmi.pg = vmi.pg.WithSizer(vmi.sizer)
+ vmi.pg = vmi.pg.WithSizer(vmi.sizer)
}
}
@@ -107,7 +107,7 @@ func Rewind(sym string, st *state.State, ca cache.Memory) (string, error) {
// Each step may update the state.
//
// On error, the remaining instructions will be returned. State will not be rolled back.
-func(vm *Vm) Run(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) Run(ctx context.Context, b []byte) ([]byte, error) {
logg.Tracef("new vm run")
running := true
for running {
@@ -188,7 +188,7 @@ func(vm *Vm) Run(ctx context.Context, b []byte) ([]byte, error) {
}
// handles errors that should not be deferred to the client.
-func(vm *Vm) runErrCheck(ctx context.Context, b []byte, err error) ([]byte, error) {
+func (vm *Vm) runErrCheck(ctx context.Context, b []byte, err error) ([]byte, error) {
if err == nil {
return b, err
}
@@ -208,9 +208,9 @@ func(vm *Vm) runErrCheck(ctx context.Context, b []byte, err error) ([]byte, erro
// If there is remaining bytecode, this method is a noop.
//
// If input has not been matched, a default invalid input page should be generated aswell as a possiblity of return to last screen (or exit).
-//
+//
// If the termination flag has been set but not yet handled, execution is allowed to terminate.
-func(vm *Vm) runDeadCheck(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) runDeadCheck(ctx context.Context, b []byte) ([]byte, error) {
if len(b) > 0 {
return b, nil
}
@@ -245,14 +245,14 @@ func(vm *Vm) runDeadCheck(ctx context.Context, b []byte) ([]byte, error) {
}
// executes the MAP opcode
-func(vm *Vm) runMap(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) runMap(ctx context.Context, b []byte) ([]byte, error) {
sym, b, err := ParseMap(b)
err = vm.pg.Map(sym)
return b, err
}
// executes the CATCH opcode
-func(vm *Vm) runCatch(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) runCatch(ctx context.Context, b []byte) ([]byte, error) {
sym, sig, mode, b, err := ParseCatch(b)
if err != nil {
return b, err
@@ -275,7 +275,7 @@ func(vm *Vm) runCatch(ctx context.Context, b []byte) ([]byte, error) {
}
// executes the CROAK opcode
-func(vm *Vm) runCroak(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) runCroak(ctx context.Context, b []byte) ([]byte, error) {
sig, mode, b, err := ParseCroak(b)
if err != nil {
return b, err
@@ -291,7 +291,7 @@ func(vm *Vm) runCroak(ctx context.Context, b []byte) ([]byte, error) {
}
// executes the LOAD opcode
-func(vm *Vm) runLoad(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) runLoad(ctx context.Context, b []byte) ([]byte, error) {
sym, sz, b, err := ParseLoad(b)
if err != nil {
return b, err
@@ -309,14 +309,14 @@ func(vm *Vm) runLoad(ctx context.Context, b []byte) ([]byte, error) {
if err != nil {
if err == cache.ErrDup {
logg.DebugCtxf(ctx, "Ignoring load request on frame that has symbol already loaded", "sym", sym)
- err = nil
+ err = nil
}
}
return b, err
}
// executes the RELOAD opcode
-func(vm *Vm) runReload(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) runReload(ctx context.Context, b []byte) ([]byte, error) {
sym, b, err := ParseReload(b)
if err != nil {
return b, err
@@ -337,7 +337,7 @@ func(vm *Vm) runReload(ctx context.Context, b []byte) ([]byte, error) {
}
// executes the MOVE opcode
-func(vm *Vm) runMove(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) runMove(ctx context.Context, b []byte) ([]byte, error) {
sym, b, err := ParseMove(b)
if err != nil {
return b, err
@@ -358,7 +358,7 @@ func(vm *Vm) runMove(ctx context.Context, b []byte) ([]byte, error) {
// executes the INCMP opcode
// TODO: document state transition table and simplify flow
-func(vm *Vm) runInCmp(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) runInCmp(ctx context.Context, b []byte) ([]byte, error) {
sym, target, b, err := ParseInCmp(b)
if err != nil {
return b, err
@@ -388,7 +388,7 @@ func(vm *Vm) runInCmp(ctx context.Context, b []byte) ([]byte, error) {
} else {
if target != string(input) {
return b, nil
- }
+ }
logg.InfoCtxf(ctx, "input match", "input", input, "next", sym)
}
vm.st.SetFlag(state.FLAG_INMATCH)
@@ -419,20 +419,20 @@ func(vm *Vm) runInCmp(ctx context.Context, b []byte) ([]byte, error) {
}
// executes the HALT opcode
-func(vm *Vm) runHalt(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) runHalt(ctx context.Context, b []byte) ([]byte, error) {
var err error
b, err = ParseHalt(b)
if err != nil {
return b, err
}
logg.DebugCtxf(ctx, "found HALT, stopping")
-
+
vm.st.SetFlag(state.FLAG_WAIT)
return b, nil
}
// executes the MSIZE opcode
-func(vm *Vm) runMSink(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) runMSink(ctx context.Context, b []byte) ([]byte, error) {
b, err := ParseMSink(b)
mcfg := vm.mn.GetBrowseConfig()
vm.mn = vm.mn.WithSink().WithBrowseConfig(mcfg).WithPages()
@@ -441,7 +441,7 @@ func(vm *Vm) runMSink(ctx context.Context, b []byte) ([]byte, error) {
}
// executes the MOUT opcode
-func(vm *Vm) runMOut(ctx context.Context, b []byte) ([]byte, error) {
+func (vm *Vm) runMOut(ctx context.Context, b []byte) ([]byte, error) {
title, choice, b, err := ParseMOut(b)
if err != nil {
return b, err
@@ -451,35 +451,35 @@ func(vm *Vm) runMOut(ctx context.Context, b []byte) ([]byte, error) {
}
// executes the MNEXT opcode
-func(vm *Vm) runMNext(ctx context.Context, b []byte) ([]byte, error) {
- display, selector, b, err := ParseMNext(b)
- if err != nil {
- return b, err
- }
- cfg := vm.mn.GetBrowseConfig()
- cfg.NextSelector = selector
- cfg.NextTitle = display
- cfg.NextAvailable = true
- vm.mn = vm.mn.WithBrowseConfig(cfg)
- return b, nil
+func (vm *Vm) runMNext(ctx context.Context, b []byte) ([]byte, error) {
+ display, selector, b, err := ParseMNext(b)
+ if err != nil {
+ return b, err
+ }
+ cfg := vm.mn.GetBrowseConfig()
+ cfg.NextSelector = selector
+ cfg.NextTitle = display
+ cfg.NextAvailable = true
+ vm.mn = vm.mn.WithBrowseConfig(cfg)
+ return b, nil
}
-
+
// executes the MPREV opcode
-func(vm *Vm) runMPrev(ctx context.Context, b []byte) ([]byte, error) {
- display, selector, b, err := ParseMPrev(b)
- if err != nil {
- return b, err
- }
- cfg := vm.mn.GetBrowseConfig()
- cfg.PreviousSelector = selector
- cfg.PreviousTitle = display
- cfg.PreviousAvailable = true
- vm.mn = vm.mn.WithBrowseConfig(cfg)
- return b, nil
+func (vm *Vm) runMPrev(ctx context.Context, b []byte) ([]byte, error) {
+ display, selector, b, err := ParseMPrev(b)
+ if err != nil {
+ return b, err
+ }
+ cfg := vm.mn.GetBrowseConfig()
+ cfg.PreviousSelector = selector
+ cfg.PreviousTitle = display
+ cfg.PreviousAvailable = true
+ vm.mn = vm.mn.WithBrowseConfig(cfg)
+ return b, nil
}
// Render wraps output rendering, and handles error when attempting to browse beyond the rendered page count.
-func(vm *Vm) Render(ctx context.Context) (string, error) {
+func (vm *Vm) Render(ctx context.Context) (string, error) {
changed := vm.st.ResetFlag(state.FLAG_DIRTY)
if !changed {
return "", nil
@@ -505,9 +505,9 @@ func(vm *Vm) Render(ctx context.Context) (string, error) {
}
// retrieve and cache data for key
-func(vm *Vm) refresh(key string, rs resource.Resource, ctx context.Context) (string, error) {
+func (vm *Vm) refresh(key string, rs resource.Resource, ctx context.Context) (string, error) {
var err error
-
+
fn, err := rs.FuncFor(ctx, key)
if err != nil {
return "", err
diff --git a/vm/runner_test.go b/vm/runner_test.go
@@ -6,23 +6,23 @@ import (
"fmt"
"log"
"testing"
-
+
"git.defalsify.org/vise.git/cache"
+ "git.defalsify.org/vise.git/internal/resourcetest"
"git.defalsify.org/vise.git/render"
"git.defalsify.org/vise.git/resource"
- "git.defalsify.org/vise.git/internal/resourcetest"
"git.defalsify.org/vise.git/state"
)
var (
- ctx = context.Background()
+ ctx = context.Background()
dynVal = "three"
)
type testResource struct {
*resourcetest.TestResource
- state *state.State
- RootCode []byte
+ state *state.State
+ RootCode []byte
CatchContent string
}
@@ -30,7 +30,7 @@ func newTestResource(st *state.State) testResource {
rs := resourcetest.NewTestResource()
tr := testResource{
TestResource: rs,
- state: st,
+ state: st,
}
rs.AddTemplate(ctx, "foo", "inky pinky blinky clyde")
rs.AddTemplate(ctx, "bar", "inky pinky {{.one}} blinky {{.two}} clyde")
@@ -66,7 +66,7 @@ func newTestResource(st *state.State) testResource {
b = NewLine(nil, MOUT, []string{"oo", "1"}, nil, nil)
b = NewLine(b, HALT, nil, nil, nil)
rs.AddBytecode(ctx, "ouf", b)
-
+
rs.AddBytecode(ctx, "root", tr.RootCode)
return tr
@@ -97,7 +97,6 @@ func getEcho(ctx context.Context, sym string, input []byte) (resource.Result, er
}, nil
}
-
func uhOh(ctx context.Context, sym string, input []byte) (resource.Result, error) {
return resource.Result{}, fmt.Errorf("uh-oh spaghetti'ohs")
}
@@ -114,7 +113,7 @@ func setFlag(ctx context.Context, sym string, input []byte) (resource.Result, er
r.FlagReset = append(r.FlagReset, uint32(input[1]))
}
log.Printf("setflag %v", r)
- return r, nil
+ return r, nil
}
@@ -124,6 +123,7 @@ func set_lang(ctx context.Context, sym string, input []byte) (resource.Result, e
FlagSet: []uint32{state.FLAG_LANG},
}, nil
}
+
//
//type TestStatefulResolver struct {
// state *state.State
@@ -151,14 +151,14 @@ func (r testResource) FuncFor(ctx context.Context, sym string) (resource.EntryFu
return nil, fmt.Errorf("invalid function: '%s'", sym)
}
-func(r testResource) getInput(ctx context.Context, sym string, input []byte) (resource.Result, error) {
+func (r testResource) getInput(ctx context.Context, sym string, input []byte) (resource.Result, error) {
v, err := r.state.GetInput()
return resource.Result{
Content: string(v),
}, err
}
-func(r testResource) getCode(sym string) ([]byte, error) {
+func (r testResource) getCode(sym string) ([]byte, error) {
var b []byte
switch sym {
case "_catch":
@@ -196,7 +196,7 @@ func TestRun(t *testing.T) {
b = []byte{0x01, 0x02}
_, err = vm.Run(ctx, b)
if err == nil {
- t.Fatalf("no error on invalid opcode")
+ t.Fatalf("no error on invalid opcode")
}
}
@@ -398,14 +398,14 @@ func TestRunArgInvalid(t *testing.T) {
_ = st.SetInput([]byte("foo"))
var err error
-
+
st.Down("root")
b := NewLine(nil, INCMP, []string{"baz", "bar"}, nil, nil)
ctx := context.Background()
b, err = vm.Run(ctx, b)
if err != nil {
- t.Fatal(err)
+ t.Fatal(err)
}
location, _ := st.Where()
if location != "_catch" {
@@ -414,7 +414,7 @@ func TestRunArgInvalid(t *testing.T) {
r, err := vm.Render(ctx)
if err != nil {
- t.Fatal(err)
+ t.Fatal(err)
}
expect := `invalid input: 'foo'
0:repent`
@@ -442,13 +442,13 @@ func TestRunMenu(t *testing.T) {
b, err = vm.Run(ctx, b)
if err != nil {
- t.Error(err)
+ t.Error(err)
}
l := len(b)
if l != 0 {
t.Errorf("expected empty remainder, got length %v: %v", l, b)
}
-
+
r, err := vm.Render(ctx)
if err != nil {
t.Fatal(err)
@@ -479,13 +479,13 @@ func TestRunMenuBrowse(t *testing.T) {
b, err = vm.Run(ctx, b)
if err != nil {
- t.Error(err)
+ t.Error(err)
}
l := len(b)
if l != 0 {
t.Errorf("expected empty remainder, got length %v: %v", l, b)
}
-
+
r, err := vm.Render(ctx)
if err != nil {
t.Fatal(err)
@@ -532,7 +532,6 @@ func TestRunReturn(t *testing.T) {
}
}
-
func TestRunLoadInput(t *testing.T) {
st := state.NewState(5)
rs := newTestResource(st)
diff --git a/vm/vm.go b/vm/vm.go
@@ -88,13 +88,14 @@ func ParseMNext(b []byte) (string, string, []byte, error) {
// ParseMSink parses and extracts the expected argument portion of a MSINK instruction
func ParseMSink(b []byte) ([]byte, error) {
return parseNoArg(b)
-// if len(b) < 2 {
-// return 0, 0, b, fmt.Errorf("argument too short")
-// }
-// r := uint32(b[0])
-// rr := uint32(b[1])
-// b = b[2:]
-// return b, nil
+ // if len(b) < 2 {
+ // return 0, 0, b, fmt.Errorf("argument too short")
+ // }
+ //
+ // r := uint32(b[0])
+ // rr := uint32(b[1])
+ // b = b[2:]
+ // return b, nil
}
// ParseMOut parses and extracts the expected argument portion of a MOUT instruction
@@ -157,7 +158,7 @@ func parseSymSig(b []byte) (string, uint32, bool, []byte, error) {
}
matchmode := b[0] > 0
b = b[1:]
-
+
return sym, sig, matchmode, b, nil
}
@@ -172,7 +173,7 @@ func parseSig(b []byte) (uint32, bool, []byte, error) {
}
matchmode := b[0] > 0
b = b[1:]
-
+
return sig, matchmode, b, nil
}
@@ -211,7 +212,7 @@ func instructionSplit(b []byte) (string, []byte, error) {
if bSz < int(sz) {
return "", nil, fmt.Errorf("corrupt instruction, len %v less than symbol length: %v", bSz, sz)
}
- r := string(b[1:1+sz])
+ r := string(b[1 : 1+sz])
return r, b[1+sz:], nil
}
diff --git a/vm/vm_test.go b/vm/vm_test.go
@@ -10,7 +10,7 @@ func TestParseOp(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- if (op != LOAD) {
+ if op != LOAD {
t.Fatalf("expected %d, got %d", LOAD, op)
}
x := append([]byte{0x03}, []byte("foo")...)