commit 338acb33332b8429f7299b56da1b50a907c107d1
parent 3a657f48e068ce522e0a4d1eda81296bfcfd272e
Author: lash <dev@holbrook.no>
Date: Sat, 31 Aug 2024 14:44:41 +0100
Include menu in gdbm directory scanner
Diffstat:
2 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
@@ -1,7 +1,9 @@
-- 0.1.15
+- 0.1.0
+ * Data storage interface with implementations for memory, filesystem, gdbm and Postgres
+- 0.0.15
* Add comprehensive documentation with texinfo.
* Prevent cursor leak in sizer.
-- 0.1.14
+- 0.0.14
* Add language support for menus.
* Support for multi-page menus (only works for template renders without a sink).
* Executable example for multi-page menus.
diff --git a/dev/gdbm/main.go b/dev/gdbm/main.go
@@ -9,6 +9,7 @@ import (
"os"
"path/filepath"
"path"
+ "strings"
gdbm "github.com/graygnuorg/go-gdbm"
@@ -17,11 +18,16 @@ import (
var (
binaryPrefix = ".bin"
+ menuPrefix = "menu"
templatePrefix = ""
scan = make(map[string]string)
+ dbg = map[uint8]string{
+ db.DATATYPE_BIN: "BIN",
+ db.DATATYPE_TEMPLATE: "TEMPLATE",
+ db.DATATYPE_MENU: "MENU",
+ }
)
-
type scanner struct {
db *gdbm.Database
}
@@ -51,11 +57,21 @@ func(sc *scanner) Scan(fp string, d fs.DirEntry, err error) error {
}
fx := path.Ext(fp)
fb := path.Base(fp)
+ if (len(fb) == 0) {
+ return nil
+ }
+ if (fb[0] < 0x61 || fb[0] > 0x7A) {
+ return nil
+ }
switch fx {
case binaryPrefix:
typ = db.DATATYPE_BIN
case templatePrefix:
- typ = db.DATATYPE_TEMPLATE
+ if strings.Contains(fb, "_menu") {
+ typ = db.DATATYPE_TEMPLATE
+ } else {
+ typ = db.DATATYPE_MENU
+ }
default:
log.Printf("skip foreign file: %s", fp)
return nil
@@ -77,7 +93,7 @@ func(sc *scanner) Scan(fp string, d fs.DirEntry, err error) error {
if err != nil {
return err
}
- log.Printf("stored key %x for %s (%s)", k, fp, ft)
+ log.Printf("stored key [%s] %x for %s (%s)", dbg[typ], k, fp, ft)
return nil
}