YARD:像attr_accessor一样记录自定义getter / setter对

时间:2011-09-28 12:25:52

标签: ruby documentation yard

我正在使用YARD来记录我的项目。 YARD文档使用

创建的属性
attr_accessor :some_attribute

在单独的“实例属性摘要”部分中。现在我有另一个属性,但使用自定义setter和getter

def some_other_attribute
  ...
end

def some_other_attribute= value
  ...
end

基本上我的问题是,如何让YARD在前一种情况下记录这对setter / getter,就像attr_accessor一样,并在“Instance Attribute Summary”中列出some_other_attribute

2 个答案:

答案 0 :(得分:5)

从0.8开始(现在处于预发布状态),@!attribute指令是表示对象是属性的推荐方法。不推荐使用@attr_*标记以支持此指令。你也可以(在0.8.0 +):

# @!parse attr_accessor :some_attribute

解析不一定由Ruby执行的代码。在0.8之前,您可以直接添加attr_accessor,然后重新定义setter / getter,如下所示:

class MyClass
  attr_accessor :foo
  def foo; something_else end
  def foo=(v) something_else(v) end
end

Ruby不应该介意,除了在ruby -w中它会警告方法重新定义。如果这有问题,您也可以在其中添加undef foo, foo=。它有点乱(如果你关心-w),这就是我们添加@!parse@!attribute之类的东西的原因。

答案 1 :(得分:1)

您应该能够在类上使用@attr标记:

# @attr [String] name The name of this object. 
class MyClass
  def name
  end
  def name=
  end
end

还有其他标签(如@attr_reader和@attr_writer)也可以提供帮助。