2012-01-15 8 views
10

Piszę dokumentację dla mojego klejnotu ruby ​​przy użyciu YARD. W moim gem, mam kod, który Wynika to wspólny wzór rubinowy, gdy moduł jest zawarte w klasie, a moduł nie tylko dodaje metody instancji, ale również dodaje metody Klasa:YARD: dokumentowanie metod klas dodanych przez dołączony moduł

module Moo 
    def self.included(klass) 
    klass.extend ClassMethods 
    end 

    module ClassMethods 
    def hello 
     puts "hello" 
    end 
    end 
end 

class Foo 
    include Moo 
end 

Foo.hello # => class method runs, printing "hello" 

Domyślnie stocznia generowanie dokumentacji dla klasy Foo, który wygląda tak:

Inadequate documentation of the Foo class

Myślę, że ta dokumentacja jest niewystarczającaponieważ nie poinformować użytkownika, że ​​metoda Foo.hello jest dostępna. Aby uzyskać informacje na temat hello, użytkownik musi kliknąć Moo, a następnie kliknąć ClassMethods.

Byłoby wspaniale mieć listę wszystkich metod klasy i instancji Foo na jednej stronie. Jak mogę to zrobić? Czy muszę zmienić kod, czy istnieje tag, który mogę dodać, aby dać YARD wskazówkę na temat ClassMethods?

+0

Próbowałaś używając [uczynić] (http://rubydoc.info/docs/yard/file/docs/GettingStarted.md#Rendering_Objects__render_____) na klasie osadzonej? Nie wiem, czy to zadziała, czy nie. –

+0

Dziękuję za poradę, ale próbowałem i nie mogłem jej wyrenderować. Daj mi znać, czy to działa dla Ciebie. –

Odpowiedz

7

Od v0.8.0 można użyć dyrektywy @!parse:

class Foo 
    include Moo 
    # @!parse extend Moo::ClassMethods 
end 
Powiązane problemy