Sha256: 2796c9083fdc97cc0a3350316cea8e4a3965b44f9f7f3fbb195e881abc37c249

Contents?: true

Size: 428 Bytes

Versions: 176

Compression:

Stored size: 428 Bytes

Contents

# TODO
# - able to be extended
# - able to be used without extending (module_function)
# - variant that returns nil instead of self
module ChainMail
  module Chainable
    module_function

    def chainable(*methods)
      methods.each do |method|
        original = instance_method(method)
        define_method method do |*args|
          original.bind(self).call(*args)
          self
        end
      end
    end
  end
end

Version data entries

176 entries across 176 versions & 2 rubygems

Version Path
axe-core-api-4.10.1.pre.5294583 lib/chain_mail/chainable.rb
axe-core-api-4.10.2 lib/chain_mail/chainable.rb
axe-core-api-4.10.2.pre.2cca230 lib/chain_mail/chainable.rb
axe-core-api-4.10.1.pre.46a0052 lib/chain_mail/chainable.rb
axe-core-api-4.10.1.pre.7e72b19 lib/chain_mail/chainable.rb
axe-core-api-4.10.1.pre.5e15f96 lib/chain_mail/chainable.rb
axe-core-api-4.10.2.pre.5bd4e5c lib/chain_mail/chainable.rb
axe-core-api-4.10.1.pre.7bf959f lib/chain_mail/chainable.rb
axe-core-api-4.10.1 lib/chain_mail/chainable.rb
axe-core-api-4.10.0.pre.53569f6 lib/chain_mail/chainable.rb
axe-core-api-4.10.1.pre.7a3723a lib/chain_mail/chainable.rb
axe-core-api-4.10.0.pre.d102edb lib/chain_mail/chainable.rb
axe-core-api-4.9.1.pre.7a03090 lib/chain_mail/chainable.rb
axe-core-api-4.9.1.pre.1a5838a lib/chain_mail/chainable.rb
axe-core-api-4.10.0 lib/chain_mail/chainable.rb
axe-core-api-4.10.0.pre.5d7eac5 lib/chain_mail/chainable.rb
axe-core-api-4.9.1.pre.f16172e lib/chain_mail/chainable.rb
axe-core-api-4.9.1.pre.09e659e lib/chain_mail/chainable.rb
axe-core-api-4.9.1.pre.a80eeee lib/chain_mail/chainable.rb
axe-core-api-4.9.0.pre.a02013a lib/chain_mail/chainable.rb