2012-04-25 48 views
1

我記錄一個項目,essientially我有類似下面的內容:動態文檔,在另一個YARD的描述中使用返回方法?

def foo 
    return bar(__method__) 
end 

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

我設立的方式類似,我已經實現foo其中,他們是他們正在返回酒吧的迴歸方法,衆說紛紜。一個例子如下:

# 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,但是如何在指定#[email protected]方法bar的返回類型時描述另一種方法。

# The descriptions for foo0... 
# @return [#[email protected]] the method name concatenated with somestring 
def foo0 
    return bar(__method__) 
end 
# The descriptions for foo1... 
# @return [#[email protected]] 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)並將它列出回報或foo方法一樣bar方法,但我不能確定如何簡單的得到它正在返回和類型/或使用foo的自定義說明將bar的退貨說明超載。

回答

1

正如您發現的那樣,您應該使用@return (see #bar)從#bar逐字複製@return標記到其他文檔字符串。注意:它也會複製說明文字。沒有辦法只是插入方法的類型。不過,您似乎並不需要它。

+0

有沒有辦法重載繼承的描述,但只使用繼承的返回類型? – rudolph9 2012-04-27 05:26:06

+0

不幸的是,沒有。 YARD只在保持乾爽的情況下工作得很好。如果您需要以非常低的粒度進行替換,YARD並不會做得很好。也就是說,如果您的API經常發生變化,您應該考慮將零件解耦以本地化增量。 – 2012-04-27 06:30:34

+0

我正在寫一個REST API的接口,我正朝着完全DRY的實現方向努力,[https://github.com/RudyIndustries/shopsense-ruby/blob/master/lib/shopsense/api.rb]是正在進行API調用的類。我正在努力定義一個DSL,以便所有需要輸入的方法是它的名稱,它的參數(從方法到方法的數量不同)以及它們的默認值。以及我希望文檔也是DRY。每種方法都有一個通用的返回類型,但每種方法對它們返回的內容都有略微不同的描述。 – rudolph9 2012-04-27 15:36:54

相關問題