32 lines
746 B
JavaScript
32 lines
746 B
JavaScript
|
var trim = require('string.prototype.trim')
|
||
|
, forEach = require('for-each')
|
||
|
, isArray = function(arg) {
|
||
|
return Object.prototype.toString.call(arg) === '[object Array]';
|
||
|
}
|
||
|
|
||
|
module.exports = function (headers) {
|
||
|
if (!headers)
|
||
|
return {}
|
||
|
|
||
|
var result = {}
|
||
|
|
||
|
forEach(
|
||
|
trim(headers).split('\n')
|
||
|
, function (row) {
|
||
|
var index = row.indexOf(':')
|
||
|
, key = trim(row.slice(0, index)).toLowerCase()
|
||
|
, value = trim(row.slice(index + 1))
|
||
|
|
||
|
if (typeof(result[key]) === 'undefined') {
|
||
|
result[key] = value
|
||
|
} else if (isArray(result[key])) {
|
||
|
result[key].push(value)
|
||
|
} else {
|
||
|
result[key] = [ result[key], value ]
|
||
|
}
|
||
|
}
|
||
|
)
|
||
|
|
||
|
return result
|
||
|
}
|