lib/double.rb in double-0.0.1 vs lib/double.rb in double-0.1.0
- old
+ new
@@ -1,38 +1,76 @@
-require 'double/version'
+# Based on http://git.io/D7oevQ
+require 'forwardable'
+
+unless defined? BasicObject
+ class BasicObject
+ instance_methods.each do |mth|
+ undef_method mth unless mth =~ /__/
+ end
+ end
+end
+
+module Double
+ class Klass < BasicObject
+ extend ::Forwardable
+
+ def initialize(name)
+ @name = name
+ end
+
+ def _
+ @_ ||= ::Kernel.const_get @name
+ end
+
+ def method_missing(mth, *args, &blk)
+ if _.respond_to? mth
+ (class << self; self; end).instance_eval do
+ def_delegator :@_, mth
+ end
+ @_.send mth, *args, &blk
+ else
+ super
+ end
+ end
+ end
+
+ def const_missing(name)
+ Klass.new name
+ end
+end