aubade
Version:
filesystem-based content processor
18 lines (17 loc) • 629 B
JavaScript
export function chain(items, options) {
const { breakpoint, key = 'flank', sort, transform = ({ slug, title }) => ({ slug, title }), } = options;
sort && items.sort(sort);
for (let idx = 0; idx < items.length; idx++) {
const [back, next] = [items[idx - 1], items[idx + 1]];
if (!back && !next)
continue;
items[idx][key] = items[idx][key] || {};
if (back)
items[idx][key].back = transform(back);
if (breakpoint && breakpoint(next))
return items;
if (next)
items[idx][key].next = transform(next);
}
return items;
}