Skip to content

Commit

Permalink
introduce mcflurry
Browse files Browse the repository at this point in the history
  • Loading branch information
chee committed Apr 5, 2017
0 parents commit 16829b2
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 0 deletions.
23 changes: 23 additions & 0 deletions README.md
@@ -0,0 +1,23 @@
# mcflurry

destructuring an object in function arguments is fun and v flexible, but it
means you can't build up the arguments over time using `curry()` and v sad.

so mcflurry lets you do this

```js
const mcflurry = require('mcflurry')
const objectLog = mcflurry(console.log)
objectLog({a: 22})({b: 47})({c: 'dog', a: 1})() //=> {a:22, b:47, c:'dog'}
```

yes unfortunately it can't magically know when the function is fully satisfied,
the only way to do that would be to supply a list of the keys that needed to be
present separately as strings. that seemed more gross.

ruby has `method(:lol).parameters` which would allow you to do it there, but not
in js in any way i could think of

so i've opted for calling it with no arguments when you're done

anyway thanks everybody bye
9 changes: 9 additions & 0 deletions index.js
@@ -0,0 +1,9 @@
module.exports = mcflurry
mcflurry.default = mcflurry

function mcflurry(fn, object = {}) {
return function(next) {
const current = Object.assign({}, object, next)
return next ? mcflurry(fn, current) : fn(current)
}
}
9 changes: 9 additions & 0 deletions package.json
@@ -0,0 +1,9 @@
{
"name": "mcflurry",
"version": "0.0.74",
"description": "build composeable functions using objects for keyword arguments",
"main": "index.js",
"repository": "git@gitlab.com:chee/mcflurry",
"author": "chee <chee@snake.dog>",
"license": "MIT"
}

0 comments on commit 16829b2

Please sign in to comment.