Repository: gohugoio/hugo (language: go)

Issue:
navigation: Don't export either MenuEntry.IsEqual or MenuEntry.IsSameResource 
I can't come up with a scenario where either of these is useful in a menu template.


Discussion / hints:
Note that we have other cases of exported fields/methods that I have marked as internal in the Go doc (typically interface methods), which means that they should not be documented or used in templates -- and can be renamed/removed at any moment.

I haven't looked at these 2, but

1. If they're not used outside of package, unexport.
2. If it's simple to make it into a func (which it is in this case), do that.
3. Else, add a "This method is for internal use only ..." comment as a comment. 

Fix patch:
diff --git a/navigation/menu.go b/navigation/menu.go
index a5b74b6fa6a..50e51bcbee8 100644
--- a/navigation/menu.go
+++ b/navigation/menu.go
@@ -124,14 +124,14 @@ func (m *MenuEntry) hopefullyUniqueID() string {
 	}
 }
 
-// IsEqual returns whether the two menu entries represents the same menu entry.
-func (m *MenuEntry) IsEqual(inme *MenuEntry) bool {
+// isEqual returns whether the two menu entries represents the same menu entry.
+func (m *MenuEntry) isEqual(inme *MenuEntry) bool {
 	return m.hopefullyUniqueID() == inme.hopefullyUniqueID() && m.Parent == inme.Parent
 }
 
-// IsSameResource returns whether the two menu entries points to the same
+// isSameResource returns whether the two menu entries points to the same
 // resource (URL).
-func (m *MenuEntry) IsSameResource(inme *MenuEntry) bool {
+func (m *MenuEntry) isSameResource(inme *MenuEntry) bool {
 	if m.isSamePage(inme.Page) {
 		return m.Page == inme.Page
 	}
diff --git a/navigation/pagemenus.go b/navigation/pagemenus.go
index 9c368f3ab42..6321a8a6316 100644
--- a/navigation/pagemenus.go
+++ b/navigation/pagemenus.go
@@ -138,7 +138,7 @@ func (pm *pageMenus) HasMenuCurrent(menuID string, me *MenuEntry) bool {
 
 	if m, ok := menus[menuID]; ok {
 		for _, child := range me.Children {
-			if child.IsEqual(m) {
+			if child.isEqual(m) {
 				return true
 			}
 			if pm.HasMenuCurrent(menuID, child) {
@@ -168,7 +168,7 @@ func (pm *pageMenus) IsMenuCurrent(menuID string, inme *MenuEntry) bool {
 	menus := pm.pagem.Menus()
 
 	if me, ok := menus[menuID]; ok {
-		if me.IsEqual(inme) {
+		if me.isEqual(inme) {
 			return true
 		}
 	}
@@ -185,7 +185,7 @@ func (pm *pageMenus) IsMenuCurrent(menuID string, inme *MenuEntry) bool {
 	// Search for it to make sure that it is in the menu with the given menuId.
 	if menu, ok := pm.sitem.Menus()[menuID]; ok {
 		for _, menuEntry := range menu {
-			if menuEntry.IsSameResource(inme) {
+			if menuEntry.isSameResource(inme) {
 				return true
 			}
 
@@ -203,7 +203,7 @@ func (pm *pageMenus) IsMenuCurrent(menuID string, inme *MenuEntry) bool {
 func (pm *pageMenus) isSameAsDescendantMenu(inme *MenuEntry, parent *MenuEntry) bool {
 	if parent.HasChildren() {
 		for _, child := range parent.Children {
-			if child.IsSameResource(inme) {
+			if child.isSameResource(inme) {
 				return true
 			}
 			descendantFound := pm.isSameAsDescendantMenu(inme, child)


Test patch: