3

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

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

当在单独的文件中时,Yard 宏在生成文档时不会保留。如何实现这一点?

4

1 回答 1

5

YARD 不跟随require调用,它也是一个单遍解析器,这意味着解析顺序很重要。基本上,定义宏的文件必须在使用它的文件之前进行解析。据推测,您的文件实际上并未命名为“file1.rb”和“file2.rb”,否则默认的全局排序可能对您有利。

要处理多个文件,只需确保 YARD 首先解析您的“file1.rb”。您可以通过将其放在 glob 的前面来做到这一点,如下所示:

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

(“但它会列出 'file1.rb' 两次,”你说?不要担心列表的唯一性,YARD 会为你做到这一点)

于 2012-04-27T04:36:13.993 回答