RDOC를 C 확장에서 메소드 인수를 올바르게 읽게하려면 어떻게해야합니까?
-
06-07-2019 - |
문제
모두 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 기반 "구문 분석"은 매우 순진합니다.
제휴하지 않습니다 StackOverflow