RDOC를 C 확장에서 메소드 인수를 올바르게 읽게하려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1030100

문제

모두 RDOC를 사용하여 C- 텍스트를 포함하는 Ruby 코드에 대한 문서를 생성하지만 메소드 인수에 문제가 있습니다. RDOC는 이름을 올바르게 구문 분석하지 않고 대신 P1, P2 등을 사용합니다.

먼저, 내 확장은 실제로 C ++로 컴파일되므로 다음과 같은 기능 정의를 사용해야합니다.

static VALUE 
MyMethod(VALUE self, VALUE flazm, VALUE saszm)
{
    return Qnil;
}

rdoc은 다음과 같은 구식 "C"정의를 기대하는 것 같습니다.

static VALUE
MyMethod(self, flazm, saszm)
    VALUE self;
    VALUE flazm;
    VALUE saszm;
{
    return Qnil;
}

어쨌든이 일을 할 수 있습니까?

도움이 되었습니까?

해결책

RDOC는 C 확장의 인수 이름에 대해 완전히 단서가 없습니다. 이것이 RDOC가 일련의 인수를 컴파일하는 방법입니다.

meth_obj.params = "(" + (1..p_count).map{|i| "p#{i}"}.join(", ") + ")"

소스 형식을 변경하면 도움이되지 않습니다.

문서를 개선하기 위해 사용할 수 있습니다 call-seq 지령. 기본값 대신 사용되는 메소드를 호출하는 하나 이상의 방법을 지정할 수 있습니다. method(p1, p2) 물건.

/*
 * call-seq:
 *   my_method(flazm, saszm) -> nil
 *   my_method(bunny) { |fluffy_ears| ... } -> true or false
 *
 * Method description here.
 */
static VALUE 
MyMethod(VALUE self, VALUE flazm, VALUE saszm)
{
    return Qnil;
}

* 다른 것들에 대해서도 단서가 없습니다. Regex 기반 "구문 분석"은 매우 순진합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top