Skip to content

Instantly share code, notes, and snippets.

@fonzerelly
fonzerelly / high_order_classes_03
Last active August 29, 2015 13:56
_.constant usage
var complexPredicate = function (a, b, c) {
...
};
//a, b, c are available in aVal, bVal, cVal
var precalculatedPredicate = _constant(
complexPredicate(
aVal,
bVal,
cVal
var myJLayoutWrapper = _createJLayoutWrapper(
trivialHandlePosition,
precalcuatedPredicate,
_.noop //not interessted in putting in a valid size
);
{
a: ["1","2"],
b: "3"
}
var UrlSearch = require("./url-search");
describe("objectizeUrlSearch", function () {
it("should convert search string to search object", function() {
var
urlSearch = "a=1&a=2&b=3",
searchObject = {
"a": ["1","2"],
"b": "3"
};
expect(UrlSearch.objectizeUrlSearch(urlSearch))
['a=1','a=2', 'b=3']
[['a', '1'], ['a', '2'], ['b', '3']]
function objectizeUrlSearch (paramString) {
var
pairStrings = paramString.split('&'),
pairs = [],
result = {},
i;
for (i = 0; i < pairStrings.length; i++) {
pairs.push(pairStrings[i].split('='));
}
var R = require('ramda');
var
//[[key, value]] -> {key: [[key, value]]}
groupByKey = R.groupBy(R.head),
//{'':a, 'b':b} -> {'b':b}
rejectEmptyKeys = R.pickBy(function(value, key) {return key !== '';}),
//[[key, value]] -> [value | undefined]
{
a: [
['a', '1'],
['a', '2']
],
b: [
['b', '3']
]
}