我有一个使用Forwardable模块中的def_delegators
方法的类。我还没有办法让Yardoc为它输出文档。我尝试使用macro,但它不会为这些特定方法输出任何内容(文件中的其他内容都很好,并且没有错误),而且我有几个{ {1}}不同长度。
e.g。
def_delegators
如果有人知道宝石或这样做的方法,这意味着我可以避免尝试写Yard扩展来做到这一点,我会非常感激。
答案 0 :(得分:5)
经过更多实验,我发现这很有效:
# @!method size
# @see Array#size
# @!method <<
# @see Array#<<
# @!method blah
# @see Array#blah
def_delegators :@xs, :size, :<<, :blah # …
很可能有一种方法可以在一行或两行中完成,但与编写扩展的工作相比,我发现这是非常可接受的。
我刚刚发现这将更好地链接到委托方法的文档:
# @!method size
# @return (see Array#size)
这将采用Array#size方法中已经记录的返回值。我希望其他标签也会这样做。它仍然很冗长,但可以接受。
答案 1 :(得分:1)
您需要结合这两个概念。使用@!macro生成@!方法。
以下是我的解决方案版本。但问题是我没有包括OptParser所以See也没有链接。第二个缺点是方法的签名,参数和返回值没有描述。第三个ick是字符串OptParser已修复,但确实需要能够进行调整(参数化)。
如果它转发到项目中包含的方法,那么你可以使用(参见Foo#方法)(在这种情况下没有@符号),Foo#方法中的任何内容都将被复制到新的源代码中。这可以通过在宏内部进行(参见Foo#$ 2)来实现 - 包括paren。见YARD's Reference Tags
# @!macro [attach] def_delegators
# @!method $2
# Forwards to $1.
# @see OptParser#$2
def_delegators :opt_parser, :order!
def_delegators :opt_parser, :on
def_delegators :opt_parser, :on_head
def_delegators :opt_parser, :on_tail
def_delegators :opt_parser, :help
def_delegators :opt_parser, :add_officious
def_delegators :opt_parser, :banner
def_delegators :opt_parser, :banner=
def_delegators :opt_parser, :program_name
def_delegators :opt_parser, :abort
def_delegators :opt_parser, :release
def_delegators :opt_parser, :release=
def_delegators :opt_parser, :version
def_delegators :opt_parser, :version=
答案 2 :(得分:0)
这适合我。
# @!method do_this
# @return [mixed] See {Instance#do_this}.
# @!method do_that
# @return [mixed] See {Instance#do_that}.
delegate *[
:do_this,
:do_that,
], to: :instance
其他:
yard-delegate
并不适用于此类构造。它虽然很老了。# @!method
置于个人:method
之上并不起作用(YARD忽略)。