0

yardoc のレジスタを反復処理する方法を探してい@macroます。私はあなたが次のようなものでそれらを使用できることを知っています:

class Post
  include DataMapper::Resource

  # @macro dm.property
  # @return [$2] the $1 $0 of the post
  property :title, String
end

次のように、配列のセクションを取得しているかのように、レジスタが表す引数をコンマで区切って生成できます。

# @macro dsl_method
# @method $1(${2--2})
# @return [${-1}] the return value of $0
create_method_with_args :foo, :a, :b, :c, String

生成します:foo(a, b, c)そしてreturns (String) the return value of create_method_with_args、私は何かを呼び出すことに興味が(${2--1}).each do |$arg|あり、ドキュメンテーションは1行のドキュメントで各パラメーターを言います.

4

1 に答える 1

1

残念ながら、マクロはドキュメントの DRYness を減らすための非常に単純なツールです。セキュリティ上の懸念から、実行可能なマクロの実装をオプトアウトしました (おそらく、コメントで Ruby を実行したくないでしょう)。それらは実際にはすべての問題に対する万能の解決策ではありませんが、非常に単純なケースではうまく機能します。より複雑なケースでは、プラグインを使用することをお勧めします。

とはいえ、実際のパラメーターのドキュメントをどこかに指定する必要があるため、プラグインでさえ何かを簡素化する方法がわかりません。私があなたなら、あなたがすでに持っているように単純に定義し、@paramタグを使用して各引数を個別に定義します。例(マクロが以前に質問で行った方法で「添付」されていたと仮定しましょう):

# @param [String] a documentation for a
# @param [Symbol] b documentation for b
# @param [Hash] c documentation for c
create_method_with_args :bar, :a, :b, :c, Fixnum

これらのドキュメントで DRY できるものは他にあまりないので、それは私にはかなり理にかなっているように思えます。

于 2012-04-27T04:45:11.650 に答える