GitLab Flavored Markdown (GLFM) 개발 지침

이 페이지 및 인접한 페이지에는 GitLab Flavored Markdown (GLFM)의 개발자 지침이 포함되어 있습니다. GitLab에서의 Markdown에 대한 사용자 설명서는 GitLab Flavored Markdown을 참조하십시오.

GitLab은 이슈 또는 병합 요청 설명, 댓글, 위키 등 여러 곳에서 Markdown을 지원합니다. 우리가 사용하는 Markdown 구현은 GitLab Flavored Markdown (GLFM)이라고 합니다.

CommonMark가 GLFM의 핵심입니다.

…Markdown에 대한 표준적이고 모호하지 않은 구문 명세와 이 명세에 대한 Markdown 구현의 포괄적인 테스트 모음입니다.

GitHub Flavored Markdown (GFM)에서 확장된 테이블이나 작업 목록과 같은 기능이 지원됩니다. 수학과 여러 줄로 된 인용구와 같은 다양한 확장 기능이 추가되어 GLFM이 만들어졌습니다.

참고: 코드의 많은 부분에서 gfm 또는 GFM을 사용합니다. 이러한 경우에는 일반적으로 GLFM이 아닌 Markdown을 지칭하는 것입니다.

기본 흐름

사용자에게 표시되는 HTML을 생성하려면 일반적으로 다음과 같이 Markdown이 처리됩니다.

  • Markdown은 사용자로부터 또는 데이터베이스로부터 읽혀 백엔드에 주어집니다.
  • 처리 파이프라인(이하 “Banzai” 파이프라인)이 실행됩니다.
    • 일부 사전 처리가 발생한 뒤 gitlab-glfm-markdown gem을 사용하여 기본 HTML로 변환되며, 이는 comrak을 사용합니다.
    • HTML을 추가로 변형하는 다양한 필터가 실행됩니다. 예를 들어, 참조 또는 사용자 정의 이모지 처리 등이 있습니다.
  • 그러면 HTML이 프론트엔드에 전달되어 다양한 방식으로 표시되거나 데이터베이스에 캐시됩니다.
    • 예를 들어, Rich Text Editor는 HTML을 tiptap에서 사용되는 형식으로 변환하여 표시 및 편집합니다.

목표

GLFM은 언제나 CommonMark와 100% 호환되도록 노력합니다. 새로운 구문을 꼭 필요한 경우가 아니라면 추가하지 않으려 합니다. 그런 경우에는 가장 수용할 수 있는 “Markdown” 구문을 찾기 위해 연구를 진행하고, 가능하다면 일반적인 구현에 근접하도록 노력해야 합니다. CommonMark 포럼은 다양한 주제에 대한 논의를 연구하기에 좋은 장소입니다.

질문이 있으시면 Plan:Knowledge 팀에 문의하십시오.