UNPKG

aubade

Version:

filesystem-based content processor

23 lines (22 loc) 717 B
export function catenate(...paths) { if (!paths.length) return '.'; const index = paths[0].replace(/\\/g, '/').trim(); if (paths.length === 1 && index === '') return '.'; const parts = index.replace(/[/]*$/g, '').split('/'); if (parts[0] === '') parts.shift(); for (let i = 1; i < paths.length; i += 1) { const part = paths[i].replace(/\\/g, '/').trim(); for (const slice of part.split('/')) { if (slice === '.') continue; if (slice === '..') parts.pop(); else if (slice) parts.push(slice); } } return (index[0] === '/' ? '/' : '') + parts.join('/'); }