【问题标题】:Dynamic documentation, using the return of method in the description of another YARD?动态文档,在另一个 YARD 的描述中使用返回方法?
【发布时间】:2012-04-25 18:39:31
【问题描述】:

我正在记录一个项目,基本上我有类似以下内容:

def foo
  return bar(__method__)
end

def bar (method)
 return method.to_s + 'somestring'
end

我正在设置许多类似于我如何实现 foo 的方法,它们正在返回 bar 的返回值。一个例子如下:

# The descriptions for foo0...
# @return [String] the method name concatenated with somestring
def foo0
  return bar(__method__)
end
# The descriptions for foo1...
# @return [String] the method name concatenated with somestring
def foo1
  return bar(__method__)
end

# The descriptions for bar...
# @return [String] the method name concatenated with somestring
def bar (method)
 return method.to_s + 'somestring'
end

但如果我将 bar 返回的内容更改为整数,那么我的文档不正确。我熟悉在 YARD 中记录 DSL,但是在描述另一种方法时,如何仅指定 #bar@return.type 方法的返回类型 bar 的返回类型。我所指的一个例子如下:

# The descriptions for foo0...
# @return [#bar@return.type] the method name concatenated with somestring
def foo0
  return bar(__method__)
end
# The descriptions for foo1...
# @return [#bar@return.type] the method name concatenated with somestring
def foo1
  return bar(__method__)
end

# The descriptions for bar...
# @return [String] the method name concatenated with somestring
def bar (method)
 return method.to_s + 'somestring'
end

最终我想要完成的是记录我的代码,而不必定义绝对值,如返回类型,这取决于另一个方法的定义。

更新: 我发现您可以调用# @return (see #bar) 并让它列出与bar 方法相同的返回或foo 方法,但我无法确定如何简单地获取正在返回的类型和/或用foo 的自定义描述重载bar 的返回描述。

【问题讨论】:

    标签: ruby documentation yard


    【解决方案1】:

    正如您所发现的,您应该使用@return (see #bar)@return 标记从#bar 逐字复制到其他文档字符串。注意:它也会复制描述文本。没有办法只插入方法的类型。不过,在您的具体示例中,您似乎不需要它。

    【讨论】:

    • 有没有办法重载继承的描述但只使用继承的返回类型?
    • 不幸的是,没有。 YARD 只在保持干燥方面效果很好。如果您需要以非常低的粒度进行替换,YARD 做得不是很好。也就是说,如果您的 API 经常更改,您应该考虑解耦部分以本地化增量。
    • 我正在为一个 REST API 编写一个接口,我正在努力实现一个完全 DRY 的实现,here 是进行 API 调用的类。我正在定义一个 DSL,这样需要输入的只是方法的名称、参数(不同方法的数量不同)以及它们的默认值。我也希望文档也干燥。每个方法都有一个共同的返回类型,但每个方法对它们返回的内容的描述略有不同。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 2018-04-12
    • 2017-10-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-07
    • 2013-07-15
    相关资源
    最近更新 更多