anchor.diff:      return str && str.includes('.') ? str.split('.')[0] : ''
     }
   
  +  var stripStrFromEnd = function (needle, str) {
  +    if (str.slice(str.length - needle.length, str.length) === needle) {
  +      return str.substr(0, str.length - needle.length)
  +    } else {
  +      return str
  +    }
  +  }
  +
  +  var stripIndexFromString = function (str) {
  +    return str && str.includes('.') ? str.split('index.md')[0] : str
  +  }
  +
     var getDoc = function (child) {
       if(shouldFolderBeDoc(child)) {
         return child.children.find(n => n.name === 'index.html');
  
positive.code:           menu_order: child.menu_order,
            title: child.nav_title || child.title,
            excerpt: child.excerpt,
            link: `/docs/${docsVersion}/${stripExtnameFromString(child.path)}`,
            children: getChildrenFromAncestors(child)
          })
        }
  
negative.code:     return menu_order_a - menu_order_b
    }
  
    var processDescendantsPath = function (path) {
      // Remove extension
      var str = stripExtnameFromString(path)
      // If str ends with 'index', remove it
      return stripStrFromEnd('index', str)
    }
  
    var docsVersionsReversed = docsVersions.slice().reverse()
  
  mixin icon(child)
    if(child.type === 'dir')
  