Si tu regardes dans les sources de Rails et plus précisément dans
ActiveSupport à cette adresse :
http://dev.rubyonrails.org/svn/rails/trunk/activesupport/lib/active_support/inflector.rb
Tu te rends compte que la classe ‘Inflections’ du module ‘Inflector’ a
des attributs en lectures qui sont des tableaux :
attr_reader :plurals, :singulars, :uncountables
C’est ces tableaux qui sont manipulés dans les méthodes ‘plural’,
‘singular’, ‘irregular’, etc…
Si tu regardes un peu plus bas l’implémentation de la méthode
‘irregular’ on s’aperçoit qu’elle appelle successivement la méthode
‘plural’ et la méthode ‘singular’
qui vont modifier respectivement les tableaux ‘@plurals’ et
‘@singulars’.
Donc l’appel à la méthode >> irregular(‘jeu’, ‘jeux’)
appellera donc :
plural(Regexp.new("(j)eu$", “i”), ‘\1’ + ‘eux’)
singular(Regexp.new("(j)eux$", “i”), ‘\1’ + ‘eu’)
Et donc ajoutera des nouvelles règles dans les tableaux “@plurals” et
“@singular” pour pouvoir les manipuler ensuite dans ton appli.
Et donc :
Inflector.inflections do |inflect|
inflect.irregular ‘jeu’, ‘jeux’
end
Veut bien dire donne moi l’instance de la classe
‘Inflector::Inflections’ et mets la dans la variable ‘inflect’ (Si on
fait un ‘inflect.class’ on a bien ‘Inflector::Inflections’) et avec
cette variable (‘inflect’) appelle la méthode ‘irregular’ qui est une
méthode qui va modifier les tableaux de la classe
‘Inflector::Inflections’ en y ajoutant de nouvelles règles.
Pour vérifier que ‘irregular’ a bien modifié les tableaux ‘@plurals’
et ‘@singulars’ on peut appeler cette méthode :
Inflector.pluralize(‘jeu’)
=> “jeux”
Pour connaître les règles déjà présentes, elles se trouvent ici :
http://dev.rubyonrails.org/svn/rails/trunk/activesupport/lib/active_support/inflections.rb
Et comme l’a dit Philippe, l’instance d’Inflector::Inflections est un
singleton donc qu’une seule instance de cet objet.
Je sais pas si j’ai été super clair, mais bon… 
Voilou
Mathieu
On 12/7/06, philippe lachaise [email protected] wrote:
Railsfrance mailing list
[email protected]
http://lists.rubyonrails.fr/mailman/listinfo/railsfrance
–
Mathieu Fosse
http://blog.kawooa.org
http://www.ziki.com/people/pointcom