]> git.maquefel.me Git - brevno-suite/hugo/commitdiff
navigation: Improve menu cache
authorKandula Naveen <104118171+Kandulanaveennaidu@users.noreply.github.com>
Sun, 14 Jan 2024 04:15:48 +0000 (09:45 +0530)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Sun, 28 Jan 2024 14:11:57 +0000 (15:11 +0100)
navigation/menu_cache.go

index b6350cd010cb89e8ccfa27c5fd4427db0ffc355a..b2c46f7ac659ded8b712401e3088f8b8def9a466 100644 (file)
@@ -35,6 +35,7 @@ func (entry menuCacheEntry) matches(menuList []Menu) bool {
        return true
 }
 
+// newMenuCache creates a new menuCache instance.
 func newMenuCache() *menuCache {
        return &menuCache{m: make(map[string][]menuCacheEntry)}
 }
@@ -44,31 +45,23 @@ type menuCache struct {
        m map[string][]menuCacheEntry
 }
 
+// menuEqual checks if two menus are equal.
 func menuEqual(m1, m2 Menu) bool {
-       if m1 == nil && m2 == nil {
-               return true
-       }
-
-       if m1 == nil || m2 == nil {
-               return false
-       }
-
        if len(m1) != len(m2) {
                return false
        }
 
-       if len(m1) == 0 {
-               return true
-       }
-
-       for i := 0; i < len(m1); i++ {
+       for i := range m1 {
                if m1[i] != m2[i] {
                        return false
                }
        }
+
        return true
 }
 
+// get retrieves a menu from the cache based on the provided key and menuLists.
+// If the menu is not found, it applies the provided function and caches the result.
 func (c *menuCache) get(key string, apply func(m Menu), menuLists ...Menu) (Menu, bool) {
        return c.getP(key, func(m *Menu) {
                if apply != nil {
@@ -77,6 +70,7 @@ func (c *menuCache) get(key string, apply func(m Menu), menuLists ...Menu) (Menu
        }, menuLists...)
 }
 
+// getP is similar to get but also returns a boolean indicating whether the menu was found in the cache.
 func (c *menuCache) getP(key string, apply func(m *Menu), menuLists ...Menu) (Menu, bool) {
        c.Lock()
        defer c.Unlock()