如何使Yard` @ macro`s适用于多个文件

时间:2012-04-25 22:51:33

标签: ruby documentation yard

如果我在一个文件中有以下内容:

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

定义的方法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

在单独的文件中, Yard宏在生成文档时不会继承。如何启用此功能?

1 个答案:

答案 0 :(得分:5)

YARD不跟踪require次调用,它也是单次传递解析器,这意味着解析顺序很重要。基本上,定义宏的文件必须在使用它的文件之前进行解析。据推测,您的文件实际上并未命名为“file1.rb&#39;和&#39; file2.rb&#39;,否则默认的glob排序可能会对你有利。

要处理多个文件,只需确保YARD正在解析你的&#34; file1.rb&#34;第一。您可以将它放在glob的前面,如下所示:

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

(&#34;但它会列出&#39; file1.rb&#39;两次,&#34;你说?不要担心列表的统一,YARD会为你做这个)< / p>