6

複数の関数間で共有される多数のオプションを持つハッシュ構造を持つ、かなり基本的な yard マクロの使用法であると私が想定したものがあります。この構造をあちこちに複製する必要がないようにするためだけにマクロを使用したいと思っていましたが、そのようには機能しないようです。

私が期待していたのは:

# @macro [new] my_hash
#   @param  $1 [Hash,Array<Hash>] Inputted my_hash
#   @option $1 [String] :a Value for A.
#   @option $1 [String] :b Value for B.
#   @option $1 [String] :c Value for C.

##
# my_func does stuff
# @macro my_hash h1
def my_func h1
end

## 
# other_func does stuff
# @macro my_hash h2
def other_func h2, a, b
end

h1 と h2 が正しく文書化されていること。少なくとも $1 は関数自体から取得するようには機能しないことがわかったと思いますが、両方のパラメーター h1 を呼び出し、マクロで $1 を h1 に置き換えることができますが、まだ欲しいものが得られません.

http://rubydoc.info/docs/yard/file/docs/Tags.md#macroの「単純なマクロの定義」の例は、私がこれを行うことができることを示していますどちらも機能していないようです)。

ヤードについてはよくわかりませんが、これはうまくいきませんか?私の結果を達成するためにできることはありますか?ヤードサーバーコンソールにエラーが表示されないため、これを説明するデバッグ機能はありますか?

ありがとう

4

3 に答える 3

0

YARDs Reference Tagsを使用して、探しているものを達成できると思います。

ドキュメントから:

タグのデータが で始まる場合、(see OBJECT)それは「参照タグ」と見なされます。参照タグは、指定された OBJECT から指定されたタグ名でタグ データを文字どおりコピーします。たとえば、メソッドは、参照タグ構文を使用して、特定のオブジェクトからすべての @param タグをコピーできます。

# @param [String] user the username for the operation
# @param [String] host the host that this user is associated with
# @param [Time] time the time that this operation took place
def clean(user, host, time = Time.now) end

# @param (see #clean)
def activate(user, host, time = Time.now) end
于 2016-06-21T17:49:08.413 に答える