Skip to content

Instantly share code, notes, and snippets.

@moimikey
Last active June 15, 2016 15:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save moimikey/170d3da6e68aecafe099 to your computer and use it in GitHub Desktop.
Save moimikey/170d3da6e68aecafe099 to your computer and use it in GitHub Desktop.
"use strict";
const assert = require('assert') // for tests
const deparam = url => {
const decodeUri = global.decodeURIComponent
const reduce = Array.prototype.reduce
const query = url.substr(url.indexOf('?') + 1).split('&')
return reduce.call(query, (memo, keyValue) => {
let key = keyValue.substr(0, keyValue.indexOf('='))
let val = keyValue.substr(keyValue.indexOf('=') + 1)
memo[decodeUri(key)] = val
return memo
}, {})
}
try {
assert.deepEqual(
deparam('a=1&b=2&c=3&d=4&e=5'),
{ e: '5', d: '4', c: '3', b: '2', a: '1' },
'can deparam'
)
assert.deepEqual(
deparam('http://google.com/?a=1&b=2&c=3&d=4&e=5'),
{ e: '5', d: '4', c: '3', b: '2', a: '1' },
'can deparam'
)
assert.deepEqual(
deparam('§=1&£=2&ß=3'),
{ '§': '1', '£': '2', 'ß': '3' },
'can deparam'
)
console.info('≥ tests passed :)')
} catch (err) {
console.error(err)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment