Sha256: 39447e29ee61eb28b55b55059b092d5f1558db75ce2dc21ed006e9cee4135046

Contents?: true

Size: 715 Bytes

Versions: 10

Compression:

Stored size: 715 Bytes

Contents

# Include an anonymous module
#
# Useful for defining a class or module with a base module. So, instead of:
#
#   class Foo
#     module Base
#       def bar
#         # ...
#       end
#     end
#     include Base
#   end
#
# You can do:
#
#   class Foo
#     include do
#       def bar
#         # ...
#       end
#     end
#   end

Class.class_eval do
  def include(*args, &block)
    block_given? ? super(Module.new(&block)) : super(*args)
  end
end

Module.class_eval do
  def include_with_anonymous(*args, &block)
    block_given? ? include_without_anonymous(Module.new(&block)) : include_without_anonymous(*args)
  end
  alias :include_without_anonymous :include
  alias :include :include_with_anonymous
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
adva-core-0.0.14 lib/core_ext/ruby/module/include_anonymous.rb
adva-core-0.0.13 lib/core_ext/ruby/module/include_anonymous.rb
adva-core-0.0.9 lib/core_ext/ruby/module/include_anonymous.rb
adva-core-0.0.8 lib/core_ext/ruby/module/include_anonymous.rb
adva-core-0.0.7 lib/core_ext/ruby/module/include_anonymous.rb
adva-core-0.0.6 lib/core_ext/ruby/module/include_anonymous.rb
adva-core-0.0.5 lib/core_ext/ruby/module/include_anonymous.rb
adva-core-0.0.4 lib/core_ext/ruby/module/include_anonymous.rb
adva-core-0.0.2 lib/core_ext/ruby/module/include_anonymous.rb
adva-core-0.0.1 lib/core_ext/ruby/module/include_anonymous.rb