PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > comp.lang.ruby > deprecated
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
deprecated

Réponse
 
LinkBack Outils de la discussion
Vieux 25/02/2008, 21h23   #1
Robert Klemme
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut deprecated


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

irb(main):010:0> class String
irb(main):011:1> deprecated :to_i
irb(main):012:1> end
=> [:to_i]
irb(main):013:0> "123".to_i
WARNING: deprecated method called: to_i
=> 123
irb(main):014:0>

Kind regards

robert
  Réponse avec citation
Vieux 25/02/2008, 22h02   #2
Joel VanderWerf
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: deprecated

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

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407

  Réponse avec citation
Vieux 26/02/2008, 07h44   #3
Robert Klemme
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: deprecated

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
  Réponse avec citation
Vieux 26/02/2008, 23h42   #4
Stéphane Wirtel
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: deprecated

Thanks for this code :d
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 06h16.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,11135 seconds with 12 queries