export function walk (list, base, callback) { if (!Array.isArray(list)) { return } let stopped = list.some(item => { let newBase = `${base}/${item.slug}` if (typeof callback === 'function') { if (callback(item, newBase) === false) { return true } } if (item.children) { if (walk(item.children, newBase, callback) === false) { return true } } return false }) return !stopped } export function getLink ({ slug, link, children }) { if (link === false) { let actual = null walk(children, slug, (item, base) => { // leaf if (!item.children || !item.children.length) { actual = base return false } }) if (actual !== null) { return `/${actual}` } } return `/${slug}` }