체크박스를 인라인으로 표시합니다. disabled 상태로 렌더링되어 클릭은 되지 않습니다.
[ ] 또는 [[CheckBox]] 또는 [[CB]][[CheckBox(x)]] 또는 [[CB(x)]] — 인자 내용은 무관, 인자가 있으면 체크됨| Raw | Preview |
|---|---|
[ ] 아직 안 한 일 [[CB]] 축약 형태 빈 체크박스 [[CheckBox]] 긴 형태 빈 체크박스 ---- [[CB(x)]] 완료된 일 [[CB(done)]] 인자 내용은 무관 [[CheckBox(x)]] 긴 형태 체크된 체크박스 |
아직 안 한 일 축약 형태 빈 체크박스 긴 형태 빈 체크박스 완료된 일 인자 내용은 무관 긴 형태 체크된 체크박스 |
마크다운 표준(GFM)에서 체크박스는 [ ] / [x]로 표기한다.
AhaMark에서는 [PageName]이 페이지 링크 문법이므로 [x]를 그대로 쓰면 x라는 페이지로의 링크로 파싱된다.
이 충돌을 해결하기 위해 검토한 방안:
\[x] (이스케이프): 체크박스가 아닌 리터럴 텍스트로만 표시됨 — 불가<code> 태그로 렌더링되어 체크박스 불가, 코드 표시 용도와 충돌 — 불가[[CheckBox(x)]] (매크로): 기존 [[MacroName(argument)]] 시스템에 그대로 통합 가능 — 채택빈 체크박스 [ ]는 어느 링크 대안에도 걸리지 않는다. 대상 자리가 [^]\s]+ 인 것들은 공백을 못 먹고, 공백을 허용하는 | 대안([^]|])은 | 를 요구하는데 [ ] 에는 없다. 2026-09-14 에 생긴, 괄호 안 전체를 이름으로 읽는 대안은 이름이 공백으로 시작하거나 끝나지 못하게 해 두었으니 공백 하나뿐인 [ ] 는 이름이 되지 못한다. 그래서 [ ] 를 체크박스로 가져가도 링크에서 빼앗는 것이 없다. 변환은 InterpreterWiki.replaceLink 가 링크를 처리하기 전에 먼저 한다.
[x] 와의 비대칭은 여기서 나온다. [ ] 는 링크 문법이 비워 둔 자리이고, [x] 는 이미 차지한 자리다. 문법 자체는 InterpreterWiki 의 Link 절과 test/com/aha00a/logics/wikis/interpreters/InterpreterWikiLinkSpec.scala 가 고정한다(후자는 [ ] 가 어떤 링크도 아님을 명시적으로 검사한다).
app/logics/wikis/macros/MacroCheckBox.scala — 매크로 본체app/logics/wikis/ExtractConvertInjectMacro.scala — CheckBox 등록, CB 별칭 추가app/logics/wikis/interpreters/InterpreterWiki.scala — [ ] → 빈 체크박스 변환 (replaceLink 내)