1######################################################################
2# Core extension library
3#
4class Module
5  # Check for an existing method in the current class before extending.  IF
6  # the method already exists, then a warning is printed and the extension is
7  # not added.  Otherwise the block is yielded and any definitions in the
8  # block will take effect.
9  #
10  # Usage:
11  #
12  #   class String
13  #     rake_extension("xyz") do
14  #       def xyz
15  #         ...
16  #       end
17  #     end
18  #   end
19  #
20  def rake_extension(method)
21    if method_defined?(method)
22      $stderr.puts "WARNING: Possible conflict with Rake extension: #{self}##{method} already exists"
23    else
24      yield
25    end
26  end
27end
28