Yard doc 和 `define_method`

Yard doc and `define_method`

有没有办法在 YardDoc 中注释用 define_method 定义的方法?

我试过这个:

%w(one two three).each do |type|
  # The #{type} way
  # @return [String] the #{type} way
  define_method("#{type}_way") do ... end
end

但是,不幸的是,没有用。

如果将方法创建移动到 class 方法中,则可以使用宏:

class Foo

  # @!macro [attach] generate
  #   @method _way
  #   The  way
  #   @return [String] the  way
  def self.generate(type)
    define_method("#{type}_way") do
    end
  end

  generate :one
  generate :two
  generate :three

end

YARD 输出:

- (String) one_way

The one way

Returns:

(String) — the one way


- (String) three_way

The three way

Returns:

(String) — the three way


- (String) two_way

The two way

Returns:

(String) — the two way