3

1つのファイルに次のようなものがある場合:

module Something
  class Resource
    # Defines a new property
    # @param [String] name the property name
    # @param [Class] type the property's type
    # @macro [attach] property
    #   @return [$2] the $1 property
    def self.property(name, type) end
  end

  class Post < Resource
    property :title, String
    property :view_count, Integer
  end
end

getで定義されたメソッドpropertyは適切に文書化されています。ただし、次の場合のように、これらの定義が別々のファイルにある場合、ドキュメントは適切に生成されません。

file0.rb

require 'file1.rb'
require 'file2.rb'

file1.rb

module Something
  class Resource
    # Defines a new property
    # @param [String] name the property name
    # @param [Class] type the property's type
    # @macro [attach] property
    #   @return [$2] the $1 property
    def self.property(name, type) end
  end
end

file2.rb

module Something
  class Post < Resource
    property :title, String
    property :view_count, Integer
  end
end

別のファイルにある場合、ドキュメントが生成されるときにヤードマクロは引き継がれません。これをどのように有効にしますか?

4

1 に答える 1

5

YARDは呼び出しに追従せずrequire、シングルパスパーサーでもあります。これは、解析順序が重要であることを意味します。基本的に、マクロを定義するファイルは、それを使用するファイルの前に解析する必要があります。おそらく、ファイルの名前は実際には「file1.rb」および「file2.rb」ではありません。そうしないと、デフォルトのglobの順序が適切に機能する可能性があります。

複数のファイルを処理するには、YARDが最初に「file1.rb」を解析していることを確認してください。これを行うには、次のようにグロブの前面に配置します。

$ yard doc lib/path/to/file1.rb lib/**/*.rb

(「しかし、それは'file1.rb'を2回リストします」とあなたは言いますか?リストを一意化することについて心配しないでください、YARDはあなたのためにそれをします)

于 2012-04-27T04:36:13.993 に答える