UNPKG

kequapp

Version:

A minimal, zero-magic Node web framework built on native APIs

43 lines (42 loc) 1.06 kB
export default function headerAttributes(header = '') { const result = {}; let inQuotes = false; let isAssignment = false; let key = ''; let value = ''; function reset() { inQuotes = false; isAssignment = false; key = ''; value = ''; } for (let i = 0; i < header.length; i++) { if (header[i] === '"') { inQuotes = !inQuotes; if (!inQuotes && isAssignment) { result[key] = value; reset(); } continue; } if (/[?:;|, ]/.test(header[i]) && !inQuotes) { if (isAssignment) result[key] = value; reset(); continue; } if (header[i] === '=' && !inQuotes) { isAssignment = true; continue; } if (isAssignment) { value += header[i]; continue; } key += header[i]; } if (isAssignment && !inQuotes) { result[key] = value; } return result; }