Checklist에 GFM 체크박스 구문을 지원해야 하나요?

인스턴스에 기존 체크리스트 중 일부가 구식 별표(*) 문법으로 표시되고 있음을 확인했습니다. 위의 rake 작업을 실행하기로 결정했지만, 업데이트가 되지 않습니다.

기억이 맞다면 지난 몇 주 동안 Discourse를 업그레이드할 때 대부분의 다른 체크리스트는 새 문법으로 조용히 마이그레이션되었습니다. 하지만 rake 작업이 놓치는 몇 가지 특이한 항목이 있는 것 같습니다. 그 이유에 대해 어떤 단서를 알고 계신 분 계신가요?

디버깅에 도움이 된다면 추가 정보를 제공하겠습니다.

업데이트: 해당 게시물 중 하나가 [\*] 문법을 사용하고 있었던 것 같습니다(UI에서 체크박스를 클릭할 때 자동으로 생성되는 경우). 따라서 rake 작업에서 놓친 경우가 아닐까 싶습니다?

4개의 좋아요

@k4rtik 제 기억이 맞다면, rake 작업은 줄의 시작 부분에만 있는 체크박스만 변경합니다.

현재 확인 중인 페이지들은 모두 줄의 시작 부분에 체크박스가 표시되어 있습니다. 질문은 이 작업이 [*]와 [\*] 둘 다 변경하는지, 아니면 전자의 구문만 변경하는지 여부입니다.

이 줄은 체크박스가 줄의 첫 세 문자 안에 있는 경우에만 적용되어야 합니다. 정규식을 확인해 봤는데 올바르게 매칭되는 것으로 보입니다.

3개의 좋아요

체크리스트는 항상 먼저 불릿 마커(* 또는 -)로 시작하는 것 아닌가요 [1, 2]? 그렇다면 정규식은 다음과 같이 매칭되어야 합니다:
- [\*]
이 경우 더 이상 처음 세 글자 안에 해당하지 않으므로 건너뛰어집니다.

나중에 중첩된 체크박스가 있는 다른 사례들도 발견했습니다. 따라서 줄의 시작 부분이라고 가정하면 많은 유효한 사용 사례가 건너뛰어집니다.

P.S. 여기서 원포스터(OP)는 GFM 체크리스트 구문을 사용하지 않는다는 것을 깨달았습니다(8월 4일 @sam의 위키 변경 이후에만 해당하지만), 저는 오래전부터 그 구문을 사용해 왔습니다. Discourse가 마크다운 문서화를 위해 참조하는 것으로 보이는 CommonMark 사양은 아직 체크리스트를 지원하지 않는 것 같습니다. Discourse가 체크리스트 구문의 자체 변형을 만들고 있는 건가요? 더 다양화하는 것보다는 널리 인기 있는 GFM 구문을 따르는 편이 좋습니다.

GFM 체크리스트 문법 사양에 대한 링크를 제공해 주시겠습니까?

위에 링크를 걸어두었지만, 다시 한 번 첨부합니다:

여기서는 올바르게 작동하는 것으로 보입니다. 위 링크의 두 예시를 붙여넣어 보면:

- [ ] foo
- [x] bar

은

  • foo
  • bar

을 생성하고,

- [x] foo
  - [ ] bar
  - [x] baz
- [ ] bim

은

  • foo
    • bar
    • baz
  • bim

을 생성합니다.

그래서 문제가 무엇인지 잘 모르겠습니다. 좀 더 구체적으로 설명해 주실 수 있을까요?

죄송합니다. 최근 변경 사항이 많아 다소 혼란을 드린 것 같습니다. 말씀드린 내용은 플러그인 페이지에 표시된 스크린샷으로, 여기서 점 목록(bulleted) 체크리스트 구문이 표시되지 않으며 (또는 rake migrate 작업이 이를 지원하지 않는 것으로 보입니다):

변경 사항을 보여주는 diff 스크린샷은 다음과 같습니다:

잘 보이지는 않지만, 왼쪽에는 점 목록 체크박스가 있는 반면, 현재 오른쪽에서는 점이 제거되어新用户에게 적용되는 기본 체크박스 구문이 다르다는 것을 시사합니다.


나중에 추가:

즉, 이제 체크리스트 플러그인을 사용하여 다음 모든 것이 지원됩니다:

[] first
-[] second
- [] third

다음과 같이 렌더링됩니다:

first
- second

  • third

반면 GFM tasklist 스펙은 세 번째 변형만 허용합니다(tasklist는 list이므로):

task list item은 첫 번째 블록이 task list item marker로 시작하고 다른 콘텐츠 전에 최소 하나의 공백 문자를 포함하는 list item입니다.

task list item marker는 선택적 수의 공백, 왼쪽 괄호 ( [ ), 공백 문자 또는 소문자/대문자 x, 그리고 오른쪽 괄호 ( ] )로 구성됩니다.

GFM tasklist 확장 스펙을 준수하려면, 첫 두 가지 변형은 허용되지 않아야 하며 플러그인 문서에서 이를 권장하지 않아야 합니다.

1개의 좋아요

GFM 케이스를 지원한다는 것은 다른 케이스를 지원하지 않는다는 뜻이 아닙니다. 그 논리를 그대로 확장하면 Discourse가 다양한 마크다운 포맷을 처리하는 방식에 수많은 부정적인 변경 사항이 필요하게 됩니다.

마크다운 체크박스를 생성하는 앱이 많이 있으며, 목록을 Discourse 게시물에 붙여넣을 수 있는 것은 상당히 편리합니다. 호환성을 깨뜨리는 데 어떤 가치가 있을까요?

1개의 좋아요

마크다운의 큰 문제 중 하나는 공통 표준이 없다는 것입니다(CommonMark가 이를 해결하고 있습니다). 이로 인해 호환되지 않는 다양한 구현체들이 존재합니다. 이미 GFM이라는 hugely popular한 체크리스트 확장 기능이 있는데, 왜 또 다른 것을 발명해야 하는 필요성이 있을까요? 저는 Discourse 개발자들이 CommonMark와 마크다운 표준화에 관심을 두고 있다고 생각했습니다.

제 문제는 대체 문법을 지원하는 것에 대한 것이 아닙니다. 저는 포스텔의 법칙을 믿습니다(물론 최신 문법 변경, 즉 [*]에서 [x]로 변경될 때 위의 문제가 고려되었어야 한다고 생각합니다). 제 문제는 GFM과 호환되지 않는 문법을 플러그인 문서에서 홍보하는 것과, GFM과 유사한 작업 목록 문법을 새 형식으로 쉽게 마이그레이션할 수 있도록 지원하지 않는 것입니다. 이로 인해 제 Discourse 인스턴스에서 많은 페이지가 깨졌습니다. 제 첫 게시글(OP)을 참고해 주세요.

3개의 좋아요

문법을 더 단순하게 변경하는 작업을 방금 완료했습니다. 이제 게시글의 어디에서든 []를 사용하여 체크박스를 만들 수 있습니다. 가까운 시일 내에 다시 변경할 계획은 없습니다. 다만, 원하시는 기능을 구현하시려면 플러그인을 포크하여 직접 수정하시는 것도 좋습니다.

2개의 좋아요