Robert Klemme
2/26/2008 7:45:00 AM
On 25.02.2008 23:02, Joel VanderWerf wrote:
> Robert Klemme wrote:
>> This just occurred to me (for Java fans):
>>
>> class Module
>> def deprecated *meths
>> meths.each do |me|
>> aliased = "_deprecate_#{me}"
>> alias_method aliased, me
>> class_eval "def #{me}(*a,&b) $stderr.puts 'WARNING: deprecated
>> method called: #{me}'; #{aliased}(*a,&b) end"
>> end
>> end
>> end
>
> Nice (and I'm not a Java fan). I'd make the output indirect, though, in
> case of GUI etc. Also, you could use this to only warn on the first call
> of each method for a given class.
>
> class Module
> def deprecated *meths
> meths.each do |me|
> aliased = "_deprecate_#{me}"
> alias_method aliased, me
> class_eval %{
> def #{me}(*a,&b)
> warn_deprecated('#{me}')
> #{aliased}(*a,&b)
> end
> }
> end
> end
> end
>
> class Object
> def warn_deprecated me
> warn "WARNING: deprecated method called: #{me}"
> end
> end
Good idea! This could even be combined with standard logging libs.
Kind regards
robert