InfoGrab DocsInfoGrab Docs

참조 처리

GitLab Flavored Markdown에서 Banzai 파이프라인의 ReferenceFilter와 ReferenceParser를 통해 GitLab 도메인 객체 참조를 처리하는 방법을 설명합니다.

GitLab Flavored Markdown 에는 다양한 GitLab 도메인 객체에 대한 참조를 처리하는 기능이 포함되어 있습니다. 이는 Banzai 파이프라인의 두 가지 추상화인 ReferenceFilter 와 ReferenceParser 를 통해 구현됩니다. 이 페이지에서는 이것들이 무엇인지, 어떻게 사용되는지, 그리고 새로운 필터/파서 쌍을 어떻게 구현하는지 설명합니다. 각 ReferenceFilter 에는 대응하는 ReferenceParser 가 있어야 합니다. 필터 간에 참조 파서를 공유할 수 있습니다. 두 필터가 동일한 유형의 객체를 찾고 링크하는 경우( data-reference-type 속성으로 지정됨), 해당 도메인 객체 유형에 대한 참조 파서는 하나만 필요합니다. Banzai 파이프라인 # Banzai 파이프라인은 Pipeline에 의해 필터링된 후 result 해시를 반환합니다. result 해시는 수정을 위해 각 필터에 전달됩니다. 여기서 필터는 콘텐츠에서 추출한 정보를 저장합니다. 다음 내용이 포함됩니다: 파이프라인의 마지막 필터 출력을 기반으로 한 DocumentFragment 또는 String HTML 마크업이 담긴 :output 키. 파이프라인의 각 필터에 의해 업데이트되며, 처리 준비가 된 DocumentFragment nodes 목록이 담긴 :reference_filter_nodes 키. 참조 필터 # 참조가 처리되는 첫 번째 방법은 참조 필터입니다. 이는 마크업 문서에서 단축 코드 및 URI 참조를 식별하고, 이를 해당 리소스에 대한 구조화된 링크로 변환하는 도구입니다. 예를 들어, 클래스 Banzai::Filter::References::IssueReferenceFilter 는 gitlab-org/gitlab#123 및 https://gitlab.com/gitlab-org/gitlab/-/issues/200048 과 같은 이슈 참조를 처리하는 역할을 합니다. 모든 참조 필터는 HTML::Pipeline::Filter 의 인스턴스이며, Banzai::Filter::References::ReferenceFilter 로부터 (종종 간접적으로) 상속합니다. HTML::Pipeline::Filter 는 현재 문서를 변경하는 void 메서드인 #call 로 구성된 간단한 인터페이스를 가집니다. ReferenceFilter 는 적절한 #call 메서드를 더 쉽게 정의할 수 있도록 하는 메서드를 제공합니다. 하지만 대부분의 참조 필터는 이 두 클래스 중 어느 것도 직접 상속하지 않고, 더 높은 수준의 인터페이스를 제공하는 AbstractReferenceFilter 로부터 상속합니다. AbstractReferenceFilter 의 하위 클래스는 일반적으로 #call 을 재정의하지 않습니다. 대신, AbstractReferenceFilter 의 최소 구현에서는 다음을 정의해야 합니다: .reference_type : 도메인 객체의 유형. 이것은 일반적으로 키워드이며, 생성된 링크의 data-reference-type 속