cb
cb copied to clipboard
Native MRI callback
Simple native Callback object for Ruby MRI (c) 2009 Lourens Naudé (methodmissing), James Tucker (raggi) and coderrr
http://github.com/methodmissing/cb
This library works with Ruby 1.8 and 1.9 and is a more efficient implementation of the following Ruby code :
class RubyCallback def initialize(object = nil, method = :call, &b) @object, @method = object, method @object ||= b end
def call(*args)
@object.__send__(@method, *args)
end
end
module Kernel private def RubyCallback(object = nil, method = :call, &b) RubyCallback.new(object, method, &b) end end
Concept, ideas and API design James's - any pointers for better GC integration much appreciated.
Examples :
'hai'.callback(:gsub).call('h', 'b') #=> 'bai' Callback( 'bai', :to_s ).call #=> 'hai' Callback{ 'hai' }.call #=> 'hai' Callback( 'bai', :gsub ).call( 'b', 'h' ) #=> 'hai'
To run the test suite:
rake
To run the benchmarks:
rake bench