Augment Ruby's currying to handle MRI 2.1 required keyword arguments
MIT License
Augments Ruby currying to handle MRI 2.1 required keyword arguments.
Proc like objects can be curried until all their required keywords have been received
Please note:
Add this line to your application's Gemfile:
gem 'keyword_curry'
And then execute:
$ bundle
Or install it yourself as:
$ gem install keyword_curry
This gem merely adds a couple of modules and it's up to you whether you would like all of your Procs monkey patched.
The monkey patch version
require "keyword_curry"
KeywordCurry.monkey_patch_proc
You may wish for this behaviour only on special Procs
require "keyword_curry"
class SpecialProc < Proc
include KeywordCurry::KeywordArgumentCurrying
# ...
end
The function is not invoked until all the arguments have been received. Each time a curried function is returned that will accept the next arguments.
func = lambda { |a:,b:,c:| [a,b,c].join(" and ") }
func.curry.call( a: "A" ).call( b: "B" ).call( c: "C" )
=> "A and B and C"
func = lambda { |a:,b:,c:| [a,b,c].join(" and ") }
func.curry.call( b: "B" ).call( a: "A" ).call( c: "C" )
=> "A and B and C"
func = lambda { |a:,b:,c:| [a,b,c].join(" and ") }
func.curry.call( c: "C", b: "B" ).call( a: "A" )
=> "A and B and C"
func = lambda { |first, a:,b:,c:| [first, a,b,c].join(" and ") }
func.curry.call("first").call( c: "C", b: "B" ).call( a: "A" )
=> "First and A and B and C"
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)