From fac46da8f16874775a940af0f16394f2a714f7da Mon Sep 17 00:00:00 2001 From: Russell Dunphy Date: Fri, 7 Dec 2012 14:40:25 +0000 Subject: [PATCH] Allow passing of arguments to wend methods --- lib/wendy.rb | 7 ++++--- spec/lib/wendy_spec.rb | 16 +++++++++++++++- wendy-0.0.1.gem | Bin 0 -> 5120 bytes 3 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 wendy-0.0.1.gem diff --git a/lib/wendy.rb b/lib/wendy.rb index 5ddf226..4480dd6 100644 --- a/lib/wendy.rb +++ b/lib/wendy.rb @@ -6,13 +6,14 @@ def wend(arg) class Wender - def initialize(initiator, arg) + def initialize(initiator, arg, *others) @initiator = initiator @arg = arg + @others = others end - def through(method) - Wender.new(initiator, initiator.send(method, arg)) + def through(method, *others) + Wender.new(initiator, initiator.send(method, *([arg] + others))) end def result diff --git a/spec/lib/wendy_spec.rb b/spec/lib/wendy_spec.rb index 6be479a..b4ea286 100644 --- a/spec/lib/wendy_spec.rb +++ b/spec/lib/wendy_spec.rb @@ -11,16 +11,30 @@ def double(x) x + x end + def add(x, y) + x + y + end + def wend_test wend(5).through(:square).and(:double).and_return end + def wend_test_with_arg + wend(5).through(:square).and(:double).and(:add, 15).and_return + end + end describe Wendy do + let(:wender) { TestWender.new } + it 'allows method chaining' do - TestWender.new.wend_test.should eq 50 + wender.wend_test.should eq 50 + end + + it 'passes additional arguments to methods in the chain' do + wender.wend_test_with_arg.should eq 65 end end diff --git a/wendy-0.0.1.gem b/wendy-0.0.1.gem new file mode 100644 index 0000000000000000000000000000000000000000..431dd52e5102afbfe23ea6a286094ad233f2b917 GIT binary patch literal 5120 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