2012-04-27 2 views
0

yardoc 레지스터를 반복하는 방법을 찾고 있습니다 @macro.Yardoc`@ 매크로 '의 레지스터 반복문

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| 같은 호출 뭔가에 관심과 문서를 할 수는 문서의 한 줄과 PARAMS의 각을 말한다.

답변

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 

을, 당신이 그 문서에 건조 할 수 밖에 많지 않다 때문이다.

+0

그런데 내가 만든 [예제] (https://gist.github.com/2510343)와 같은 방법에 대해 동적 인 인수를 사용하여 DSL에 접근하는 방법은 무엇입니까? 궁극적으로 나는이 선언문의 정신에서 DSL을 정의하고 싶다. def self.property (name, type, (arg_name, default, type, required) *)'. 무거운 C의 배경에서 나는 내가 할 수있는 최선의 방법을 추측한다 그것은 구조체에 상응하는 무언가의 동적 숫자를 입력하고 각 동적으로 문서화 된 '@ param' 문서에 따라 구조체 내에 포함 된 값 . – rudolph9