같은 뜻은 한 꼴로 쓰고 진단이 고칠 꼴을 알린다
배경
문법 표(src/source/grammar.js)의 문장과 선택 사항을 하나씩 점검했다. 같은 뜻을 두 꼴로 쓰는 곳이 남아 있었다.
- 점선은 선과 이동에서 값 없는 낱말
dashed이고, 그룹에서는border=dashed였다. appearance=filled|outline은tone이 없으면 오류였다. 색 이름을 고르지 않고 면이나 경계만 강조할 방법이 없었다.- 값 없는 낱말과
키=값을 읽는 코드가 줄마다 따로 있었다. 선(quiet,dashed,head=), 이동(dashed,create,destroy,stuck), 흐름(stuck), 클래스(abstract,static), 카드 줄(mono), 장면(mode=,speed=), 계열(role=,key=), 구간(measure=)이다. 같은 실수에 줄마다 다른 메시지가 나왔다. - 오타 제안(
Did you mean)은 선언한 이름에만 있었다. 문장 낱말, 선택 사항 키, 값 목록의 값, 시간 단위에는 없었다. 기준 측정에서 오타 58개 가운데 41개(71%)만 고칠 낱말을 알렸다. - 진단 자리(
column)는 대부분 줄의 첫 글자였다. 값 형식 메시지에는 문서용 한국어 이름이 섞였다(else is a 도형 이름). - 추적 구간의
lane=은 선언한 카드여야 했다. 시간만 보이려는 추적도 레인마다 카드를 선언해야 했다. 그 카드가 기본 그래프 보기를 따로 그렸다.
선택지
| 선택지 | 장점 | 단점 |
|---|---|---|
그룹의 border=dashed를 두고 선과 이동도 border=dashed로 바꾼다 |
값 목록으로 늘릴 자리가 있다 | 값이 둘뿐인 켜고 끄기를 키=값으로 쓰게 된다. 다른 켜고 끄기(quiet, mono, stuck, pk)와 어긋난다 |
모두 값 없는 낱말 dashed 하나로 쓴다 |
켜고 끄기의 꼴이 문법 전체에서 하나다. 예제의 대부분이 이미 이 꼴이다 | 그룹 원본을 고쳐야 한다 |
| 두 꼴을 함께 받는다 | 기존 원본이 그대로 돈다 | 별칭 금지 규칙을 어긴다 |
결정
켜고 끄는 뜻은 값 없는 낱말 하나로 쓴다. 그룹의 점선 테두리는 dashed다. border= 키와 border 값 목록은 문법 표에서 뺐다. border=dashed를 쓰면 그 키 자리의 syntax 오류가 write dashed instead of border=dashed를 알린다. 두 꼴을 받는 경로는 없다.
함께 정한 것은 다음과 같다.
appearance=filled|outline에tone이 없으면 무채색gray계열로 칠한다. 결과는tone=gray와 같다. 도형, 그룹, 카드 줄이 같은 규칙이다.- 값 없는 낱말과
키=값은 모든 줄에서readOptions하나가 문법 표대로 읽는다. 받지 않는 낱말, 두 번 쓴 키, 값 형식 위반의 메시지가 어느 줄에서나 같은 꼴이다. - 모르는 문장 낱말, 키, 값, 칸 이름, 시간 단위에는 그 자리에서 받는 낱말 가운데 가까운 것을 제안한다. 다른 도구의 습관(Mermaid, D2, PlantUML, CSS 꾸밈 키)은 받지 않고 같은 뜻의 ThinkFlow 꼴을 알린다. 목록은 시작 선언과 없앤 형태다.
- 진단 자리는 틀린 낱말의 첫 글자다. 메시지 끝에는 마침표를 두지 않는다.
- 선언 부분 안의 순서는 자유라는 규칙의 예외였던
on줄(값 선언보다 앞에 쓰면Declared: none오류)을 없앴다.on줄은 선언을 모두 읽은 뒤 읽는다. lane=은 카드 이름이거나 따옴표 레인 이름(lane="Gateway")이다. 따옴표 이름을 쓰는 추적은 카드도 그래프 보기도 만들지 않는다. 카드 이름은 레인을 카드에 잇는 참조이고, 따옴표 이름은 카드 없는 레인의 이름이다. 둘은 뜻이 달라 별칭이 아니다.
가른 기준은 같은 뜻의 꼴이 하나인가와 기존 예제를 가장 적게 바꾸는가다. 값 없는 낱말 dashed가 둘을 함께 만족한다.
결과
- 그룹 원본의
border=dashed는dashed로 고쳐야 한다. 저장소의 예제, showcase, 문서는 이 PR에서 고쳤다. - 오타 제안은 기준 측정의 오타 65개 가운데 제안 대상 58개 모두에서 맞는 줄과 고칠 낱말을 알린다.
- 진단 메시지와 자리가 바뀌어 메시지 글을 비교하는 외부 도구는 갱신이 필요하다.
code는 바뀌지 않았다.
점검에서 남긴 제안
바꾸면 예제와 문서가 넓게 바뀌거나 뜻을 다시 정해야 해서 이번에 고치지 않은 것이다.
| 번호 | 지금 | 문제 | 제안 |
|---|---|---|---|
| P1 | 보기는 view graph down(자리 값), 그룹은 direction=down(키=값) |
같은 뜻(방향)을 두 꼴로 쓴다 | 보기도 direction=down으로 쓰거나 그룹도 자리 값으로 쓴다. 모든 예제의 view graph down이 바뀐다 |
| P2 | from=이 값의 처음 값(value, queue)과 다중성의 출발 쪽(선, 열)을 함께 뜻한다 |
한 키가 두 뜻이다. 오류 메시지가 줄 종류로 갈라진다 | 다중성을 다른 키(from-count=, to-count= 등)로 나눈다 |
| P3 | 장면과 이동의 at=, time=은 단위 있는 시간(2s), 구간의 at=, dur=는 단위 없는 숫자(추적의 unit=) |
같은 키 at의 값 꼴이 둘이다 |
구간도 단위를 적거나(at=20ms) 키 이름을 나눈다 |
| P4 | 켜고 끄기가 값 없는 낱말(quiet, dashed)과 on/off 값(zero off, fragment run=off) 두 꼴이다 |
같은 종류의 뜻이 두 꼴이다 | zero, run도 값 없는 낱말로 바꾼다(run=off는 기본값을 뒤집는 낱말 하나) |
| P5 | 테이블 열의 pk, unique, fk=표.열과 블록의 pk (열), unique (열), fk (열) -> 표 (열) |
열 하나의 키를 두 꼴로 쓸 수 있다 | 블록 문장은 열 둘 이상의 묶음 키에만 받는다 |
| P6 | 격자의 rows=, cols=는 격자 크기, 칸의 rows=, cols=는 칸이 차지하는 칸 수 |
같은 키가 줄마다 다른 양이다 | 칸 쪽을 row-span=, col-span=으로 나눈다 |
| P7 | 목록 값 키의 이름이 단수(set=, status=)와 복수(legs=, keep=)로 섞여 있다 |
목록인지 이름으로 알 수 없다 | 새 키부터 한 규칙(단수)을 정하고 기존 키는 P1과 함께 바꾼다 |
다시 볼 조건
- 제안 P1~P7 가운데 하나를 고칠 때 같은 PR에서 이 표를 갱신한다.
- 사용자가 다른 도구의 꼴을 반복해서 쓰는데 시작 선언과 없앤 형태 표에 없을 때