2012-06-18 2 views
0

저는 이것에 정말 새로운데, 저는 YARD docs을 겪어 왔고, 제 문제에 대한 해결책을 찾아 내지 못했습니다.YARD 필터를 사용하여 클래스의 태그를 검색하려면 어떻게해야합니까?

다음은 내가 시작하는 코드입니다. https://github.com/spape/yard-rest-plugin 잘 작동하지만 일부 기능을 추가하려고합니다.

기본적으로 필자는 컨트롤러 API 문서를보고있는 사람들이 사용할 수있는 모델의 특성을 볼 수 있도록 일부 모델 설명서를 포함 할 수 있도록 필터를 추가하려고합니다.

플러그인, yard-rest는 @resource 태그가없는 모든 메소드를 걸러냅니다. 그래서, 내 모델에 API 문서의 특정 정보를 표시하고자하는 @resource_object 태그를 추가한다고 생각했습니다.

플러그인 코드에서. 나는 /lib/yard-rest.rb

YARD::Templates::Template.extra_includes << RestFilters 

에서 찾을 수 있으며, 해당 파일에, 나는 reject_without_resource(list) 방법

def reject_without_resource(list) 
    if list 
     list.delete_if { |object| 
     if !object.is_a?(YARD::CodeObjects::ClassObject) 
      true 
     else 
      !object.meths.detect{ |x| x.has_tag?(:resource) }# and 
      # !object.detect{ |x| x.has_tag?(:resource_object) } 
     end 
     } 
    end 
    end 

목적은 우리가 관심 경우에 YARD::CodeObjects::ClassObject입니다 수정했습니다. object.meths은 메소드 배열 (Method Objects)입니다. 메소드 객체에는 메소드가 있는지 여부를 테스트 할 수있는 detect 메소드가 있습니다.이 태그는 .has_tag? 호출을 통해 테스트하려는 태그를가집니다. 그러나 나는 수업 수준과 비슷한 것을 찾을 수 없었다. 지금 당장은 API Docs 모델의 메소드를 문서화하고 싶지 않기 때문에 @resource 태그를 모든 모델 메소드에 넣고 싶지는 않습니다.

나의 현재 .yardopts 내가 실제로 모델과 컨트롤러를 통해 검색하고 있음을 보여주고, 파일 :

그래서
--title "My API Documentation" 
--plugin rest 
--readme API_README 
app/models/*.rb 
app/controllers/*.rb 

, 내가 모델을 포함 할 수 있도록 필터를 변경 어떻게? 아니면 최소한 클래스 수준의 태그입니까?

답변

0

밝혀지면 개체에서 .has_tag를 호출 할 수 있습니다.

당신은 당신이 같이 할 것을 다시 정렬 할 경우

def reject_without_resource(list) 
    if list 
     list.delete_if { |object| 
     if object.has_tag?(:resource_object) 
      false 
     elsif object.meths.detect{ |x| x.has_tag? (:resource) } 
      false 
     else 
      true 
     end 
     } 
    end 
    end 

를 작동합니다
관련 문제