Skip to content
created by Aha00aAha00a at 2026-05-24
last modified by Aha00aAha00a at 2026-09-14
revision: 4

MacroCheckBox

체크박스를 인라인으로 표시합니다. disabled 상태로 렌더링되어 클릭은 되지 않습니다.

1. 문법

  • 빈 체크박스: [ ] 또는 [[CheckBox]] 또는 [[CB]]
  • 체크된 체크박스: [[CheckBox(x)]] 또는 [[CB(x)]] — 인자 내용은 무관, 인자가 있으면 체크됨

2. 예시

Raw Preview
[ ] 아직 안 한 일
[[CB]] 축약 형태 빈 체크박스
[[CheckBox]] 긴 형태 빈 체크박스
----
[[CB(x)]] 완료된 일
[[CB(done)]] 인자 내용은 무관
[[CheckBox(x)]] 긴 형태 체크된 체크박스

아직 안 한 일

축약 형태 빈 체크박스

긴 형태 빈 체크박스


완료된 일

인자 내용은 무관

긴 형태 체크된 체크박스

3. 개발 문서

3.1. 설계 경위

마크다운 표준(GFM)에서 체크박스는 [ ] / [x]로 표기한다.

AhaMark에서는 [PageName]이 페이지 링크 문법이므로 [x]를 그대로 쓰면 x라는 페이지로의 링크로 파싱된다.

이 충돌을 해결하기 위해 검토한 방안:

  • \[x] (이스케이프): 체크박스가 아닌 리터럴 텍스트로만 표시됨 — 불가
  • Copied!! (백틱): <code> 태그로 렌더링되어 체크박스 불가, 코드 표시 용도와 충돌 — 불가
  • [[CheckBox(x)]] (매크로): 기존 [[MacroName(argument)]] 시스템에 그대로 통합 가능 — 채택

빈 체크박스 [ ]는 어느 링크 대안에도 걸리지 않는다. 대상 자리가 [^]\s]+ 인 것들은 공백을 못 먹고, 공백을 허용하는 | 대안([^]|])은 | 를 요구하는데 [ ] 에는 없다. 2026-09-14 에 생긴, 괄호 안 전체를 이름으로 읽는 대안은 이름이 공백으로 시작하거나 끝나지 못하게 해 두었으니 공백 하나뿐인 [ ] 는 이름이 되지 못한다. 그래서 [ ] 를 체크박스로 가져가도 링크에서 빼앗는 것이 없다. 변환은 InterpreterWiki.replaceLink 가 링크를 처리하기 전에 먼저 한다.

[x] 와의 비대칭은 여기서 나온다. [ ] 는 링크 문법이 비워 둔 자리이고, [x] 는 이미 차지한 자리다. 문법 자체는 InterpreterWiki 의 Link 절과 test/com/aha00a/logics/wikis/interpreters/InterpreterWikiLinkSpec.scala 가 고정한다(후자는 [ ] 가 어떤 링크도 아님을 명시적으로 검사한다).

3.2. 구현

  • app/logics/wikis/macros/MacroCheckBox.scala — 매크로 본체
  • app/logics/wikis/ExtractConvertInjectMacro.scala — CheckBox 등록, CB 별칭 추가
  • app/logics/wikis/interpreters/InterpreterWiki.scala — [ ] → 빈 체크박스 변환 (replaceLink 내)

4. See Also

4.2. Adjacent Pages

Control
≤ 32
all
1.0x
1.0x
80
-120
ON
Metrics
Nodes(visible/total)0/0
Links(visible/total)0/0
Avg degree0.00
Depth coverage0
Queue(fetch/graph)0 / 0
Zoom(scale)1.00x
Ctrl/⌘ + Scroll: Zoom
Root 1-hop 2-hop+