fix(core): 여는 쪽이 막힌 강조를 같은 줄의 거울 마커와 짝짓는다 - #100
Merged
Merged
Conversation
minjun0219
added this pull request to stack #101
October 2, 2026 13:13
minjun0219
marked this pull request as ready for review
October 2, 2026 22:44
`값**(합계)**를` · `이름이**"홍길동"**이다` 처럼 여는 `**` 앞이 글자이고 뒤가 구두점이면 CommonMark 는 열지 않는다. 지금까지는 첫 `**` 를 추측으로 열었다가 블록 끝에서 버리고, 둘째 `**` 는 "추측은 닫지 않는다" 규칙에 걸려 글자로 남겼다 — 하나는 사라지고 하나만 보이는 가장 나쁜 결과였다. 이 프로젝트를 시작하게 한 모양 가운데 하나다. - 막힌 여는 마커는 같은 줄에서 같은 길이 · 앞이 구두점인 마커(거울 모양)와 짝짓는다. 추측을 닫지 않는 규칙을 만든 글롭 · 주석은 여는 쪽 뒤가 공백이고, 마스킹 번호는 길이가 달라 걸리지 않는다 - 짝 없는 막힌 마커는 버리지 않고 글자로 되돌린다 — `2**(n-1)` 이 `2(n-1)` 이 되던 것 - Rust · Go · 하네스 참조 모델 같이. 코퍼스 `hemmed-opener-before-punct` - 출력은 닫는 쪽 장치를 그대로 탄다(GitHub `<strong>`, 슬랙 U+2060). 슬랙 · 노션에서 굵게로 실측(2026-10-02) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
minjun0219
force-pushed
the
fix/hemmed-opener
branch
from
October 2, 2026 22:46
58a5b44 to
538fcac
Compare
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 58a5b44350
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
PR #100 의 Codex 리뷰 두 건을 반영한다. - 막힌 여는 마커의 거울 짝은 앞이 여는 괄호·따옴표(`([{「『(【《“‘`)가 아니어야 한다. `2**(n-1) (**주의**)` 의 둘째 `**` 를 거울로 삼키면 `(` 까지 굵어지고 셋째가 글자로 남았다. 이제 막힌 마커는 글자로 돌아가고 `**주의**` 가 온전히 열린다. ASCII `"`·`'` 는 여닫는 모양이 같아 가르지 않는다. - 안 닫힌 코드 스팬을 되돌려 다시 읽을 때 줄 번호를 코드 스팬이 열린 줄로 되감고 줄바꿈마다 센다. 전에는 `self.line` 이 그대로라 "같은 줄" 검사가 줄을 넘어 통과했다 (`` `값**(합계)⏎)**를 `` 가 굵어졌다). Rust·Go·하네스 참조 모델에 같이 넣고, 코퍼스 `hemmed-opener-before-punct` 에 두 모양을 더했다. Co-Authored-By: Claude <noreply@anthropic.com>
minjun0219
added a commit
that referenced
this pull request
Oct 2, 2026
코어에 넣은 규칙(#100 리뷰 반영)을 lezer 확장에도 같이 넣는다. 막힌 여는 마커가 열려 있을 때 앞이 여는 괄호·따옴표인 마커(`2**(n-1) (**주의**)` 의 둘째 `**`)는 거울이 아니라 새 강조의 여는 마커다. 이때 막힌 마커는 물려서(`retire`) 더는 짝 후보가 되지 않고 글자로 남는다 — 코어가 글자로 되돌리는 것과 같다. 막힌 마커가 또 올 때도 앞의 것을 같이 물린다. Co-Authored-By: Claude <noreply@anthropic.com>
minjun0219
added a commit
that referenced
this pull request
Oct 2, 2026
* feat(core): 추측으로 짝지은 강조를 세고, 수식은 짝짓지 않고, 슬랙은 글자 별표를 이스케이프한다 여는 쪽이 막힌 강조(#100)는 규칙이 아니라 추측으로 짝을 맺는다. 그 판단을 보고에 드러내고, 애매한 자리를 좁히고, 슬랙에서 글자 별표가 다시 읽히는 것을 막는다. 모델에게 "수식은 백틱으로" 라고 부탁하지 않아도 되게 하는 것이 목표다. - `Repairs.guessed_pair`(npm `guessedPair`, Go `GuessedPair`, CLI JSON) — 고친 것 다섯 번째. `any()`에 든다. 0 이 아니면 한 번 볼 만한 답변이다 - 거울 짝은 **닫는 마커 뒤에 글자(조사)가 와야** 맺는다 — 마스킹 번호 `4***-…-003*` 의 홑 `*` 가 같은 줄 멀리의 글롭 `underfront.*` 와 묶이던 것. **양 끝이 다 ASCII 영숫자면 수식**이라 짝짓지 않는다(`x**(y)**z`, `2**(n-1)**2`). 막힌 여는 마커가 또 오면 앞의 것은 글자로 되돌리고 새것을 연다 — 앞의 것이 뒤의 거울 짝을 가로채지 않게 - **슬랙은 글자 `*` 를 `\*` 로 낸다**(실측 2026-10-02, `chat.postMessage`): 글자로 둔 별표를 슬랙이 CommonMark 로 다시 읽어 `x**(y)**z 와 2**(n-1)**2` 의 `**z 와 2**` 와 마스킹 번호의 `-****-` 를 굵게로 그렸다(후자는 지금 main 도 그렇다). `\*` `\~` `\<` `\_` 는 글자로 그렸다. 하네스의 슬랙 CommonMark 판정(#99)이 이걸 잡아냈다. 코퍼스 슬랙 기대값 4건이 바뀐다 - Rust · Go · 하네스 참조 모델 같이. 코퍼스 `hemmed-opener-before-punct` 에 수식 줄 · 사이트 문서에 `<Next />` Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * test(fuzz): 한국어 조사 앞 강조 조각을 퍼즈 알파벳에 더한다 닫는 쪽·여는 쪽이 막힌 모양, 겹친 강조, 수식, 낫표를 부품으로 넣어 새 규칙이 스트리밍 일치와 Rust↔Go 대조에 실제로 걸리게 한다. Rust 20,000회 · Go 4,000회(Rust CLI 대조) 통과. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
minjun0219
added a commit
that referenced
this pull request
Oct 2, 2026
코어에 넣은 규칙(#100 리뷰 반영)을 lezer 확장에도 같이 넣는다. 막힌 여는 마커가 열려 있을 때 앞이 여는 괄호·따옴표인 마커(`2**(n-1) (**주의**)` 의 둘째 `**`)는 거울이 아니라 새 강조의 여는 마커다. 이때 막힌 마커는 물려서(`retire`) 더는 짝 후보가 되지 않고 글자로 남는다 — 코어가 글자로 되돌리는 것과 같다. 막힌 마커가 또 올 때도 앞의 것을 같이 물린다. Co-Authored-By: Claude <noreply@anthropic.com>
Merged
minjun0219
added a commit
that referenced
this pull request
Oct 2, 2026
* feat(npm): lezer 확장 — @lezer/markdown 이 mdwire 규칙으로 강조를 읽는다 mdwire 를 거치지 않고 `@lezer/markdown` · CodeMirror 로 마크다운을 그리는 화면에서 `**설정(config)**을` 의 별표가 그대로 보인다. 코어 `inline.rs` 의 읽기 규칙을 lezer 인라인 파서로 옮긴 확장을 `./lezer` 서브패스로 낸다 (mdwire-16 2단계). WASM 없음, `@lezer/markdown` 은 선택 peer. - lezer 의 기본 구분자 해석은 내장 구분자에만 크기·"3의 배수" 규칙을 적용해 못 쓴다. 확장용 API (`findOpeningDelimiter` · `takeContent`)로 닫는 자리에서 바로 짝을 맺는다 — 코어 규칙 1 과 같은 모양 - 옮긴 규칙: 닫기(앞이 공백 아님) · 열기(`can_open`, `①` 은 글자 아님) · 먼저 연 쪽이 짐 · `_` 단어 안 · `***` 쪼개기 · 막힌 여는 마커의 거울 짝(수식 제외) · `~~`(GFM 노드가 있을 때만) - 코어와 다른 것 셋(의도): 짝 잃은 마커는 글자로, 블록 끝에서 닫지 않음, `****` 이상은 글자 - 스모크가 설치한 패키지로 코어의 텔레그램 출력과 17가지를 대조한다. 실제 문단 6,965개 대조에서 규칙 차이는 위 셋뿐 Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * fix(npm): lezer 확장도 여는 괄호 뒤 마커를 거울로 삼키지 않는다 코어에 넣은 규칙(#100 리뷰 반영)을 lezer 확장에도 같이 넣는다. 막힌 여는 마커가 열려 있을 때 앞이 여는 괄호·따옴표인 마커(`2**(n-1) (**주의**)` 의 둘째 `**`)는 거울이 아니라 새 강조의 여는 마커다. 이때 막힌 마커는 물려서(`retire`) 더는 짝 후보가 되지 않고 글자로 남는다 — 코어가 글자로 되돌리는 것과 같다. 막힌 마커가 또 올 때도 앞의 것을 같이 물린다. Co-Authored-By: Claude <noreply@anthropic.com> * fix(review): lezer 확장이 진 여는 마커를 물리고 peer 바닥을 1.5 로 올린다 PR #103 의 Codex 리뷰 두 건을 반영한다. - 규칙 2(앞이 공백인 여는 마커가 또 오면 먼저 열린 쪽이 진다)에서 진 구분자를 `cx.parts` 에 그대로 두어 `**old⏎**new** tail**` 의 끝 `**` 가 첫 `**` 와 다시 짝지어 문단 전체가 굵어졌다. 진 구분자를 물려서(`retire`) 더는 짝 후보가 되지 않고 글자로 남게 한다. - `@lezer/markdown` peer 범위를 `>=1.5` 로 올린다 — 확장이 쓰는 `getDelimiterAt` 은 1.5.0 에서 생겼다(1.4.3 에는 없다, 확인). 스모크는 peer 범위의 바닥 판으로 깔아 돌리고 최신판으로 한 번 더 돌린다 — 전에는 최신판만 깔아 바닥이 깨져도 몰랐다. Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
값**(합계)**를·이름이**"홍길동"**이다처럼 여는**앞이 글자이고 뒤가 구두점이면, 전에는 첫**는 버리고 둘째는 글자로 남겼다(모든 채널). 같은 줄의 거울 모양 마커와 짝짓고, 짝이 없으면 버리지 않고 글자로 되돌린다. #99 위에 쌓은 PR 이다.변경 사항
추측을 닫지 않는 규칙의 예외
그 규칙은 글롭(
.* (4개)) · 주석(/* */)에서 실측으로 나왔다. 예외를 "여는 쪽 뒤가 구두점 + 같은 줄 + 같은 길이 + 닫는 쪽 앞이 구두점" 으로 좁혀서 글롭 · 주석(여는 쪽 뒤가 공백) · 마스킹 번호(길이 다름)는 걸리지 않는다. 코퍼스 · 퍼즈 · 대조 테스트가 그대로 통과한다.crates/mdwire-core/src/inline.rs:330
짝 없는 막힌 마커는 글자로
2**(n-1)이2(n-1)이 되던 것(내용 손실)을 고친다. 버리던 것을 되돌리는 쪽이라 보고의droppedMarker가 그만큼 준다.crates/mdwire-core/src/inline.rs:515
검증
게이트 전부 통과(코퍼스 162회 · 불일치 0, Go 대조, 할당 게이트 — 할당 수는 main 과 같고 바이트만 +32). 슬랙(
chat.postMessage) · 노션(커넥터)에서 굵게로 실측. 수식x**(y)**z처럼 한 줄에 거울 모양이 나오면 굵게로 읽히는 것은 위에 쌓은 PR 에서 거른다(양 끝이 ASCII 영숫자면 짝짓지 않는다).모든 리뷰 코멘트는 한국어로 작성해 주세요.
🤖 Generated with Claude Code