2010-01-28 8 views
4

La méthode ci-dessous existe dans la gemme Redcloth.Que signifie cette construction, en Ruby?

Ma question est: que signifie la construction "to (RedCloth :: Formatters :: HTML)"? "to" n'est pas une méthode dans la classe, ni dans la superclasse (qui est la classe String).

Vive. Christian. Cela peut être défini sur un objet ou dans un module du noyau.

def to_html(*rules) 
    apply_rules(rules) 
    to(RedCloth::Formatters::HTML) 
end 

Répondre

7

Lorsque vous effectuez une recherche toute source de RedCloth pour def to, en plus de trouver quelques méthodes qui commencent par to, vous trouverez aussi la méthode exacte to dans ext/redcloth_scan/redcloth_scan.rb.rl.

Il y a deux choses qui se passent ici. Tout d'abord, ce fichier est prétraité par Ragel. Mais pour cette question, vous pouvez ignorer ce fait et lire la syntaxe bizarre dans ce fichier. Focus sur les bits de Ruby.

Deuxièmement, la classe RedCloth::TextileDoc est reopend ici. Cela signifie que la classe de ce fichier et lib/redcloth/textile_doc.rb sont identiques. La méthode d'instance to sera donc disponible pour le morceau de code que vous avez cité.