Skip to content

Conversation

@zzaekkii
Copy link

closed #140

완료 태스크

  • 가운뎃점으로 쓴 줄임표 ···⠲⠲⠲가 아닌 ⠠⠠⠠로 변환되도록 수정
  • ······……같이 2번 연속으로 사용된 줄임표를 1개로 취급하도록 처리 (53항)
  • 49항 8번 항목 테스트의 잘못된 정답 수정 후 정상 동작 확인

자세한 내용

image

결과적으로는 총 4건의 기존 실패 테스트를 성공하게 만들었습니다.


  1. ······……처럼 2번 연속으로 쓰였을 때, 1개처럼 취급해야 하는 처리가 빠져있음
  2. 가운뎃점으로 쓴 줄임표 ···⠠⠠⠠로 변환되지 않고, 마침표로 쓴 줄임표 처럼 ⠲⠲⠲로 변환됨

#140 이슈에서 언급한 2가지 문제를 해결했고 추가로 49항 8번 테스트에 잘못된 정답이 csv파일에 있는 것을 수정했습니다.

3가지 작업 내용을 각각 설명하면서 성공한 테스트 내용도 함께 다루겠습니다.

1️⃣가운뎃점으로 쓴 줄임표 ···⠲⠲⠲가 아닌 ⠠⠠⠠로 변환되도록 수정

static SHORTCUT_MAP: phf::Map<char, &'static [u8]> = phf_map! {
    '"' => &[decode_unicode('⠦')],
    // '"' => &[decode_unicode('⠴')],
    '\'' => &[decode_unicode('⠠'), decode_unicode('⠦')],
    // '\'' => &[decode_unicode('⠴'), decode_unicode('⠄')],
    '~' => &[decode_unicode('⠈'), decode_unicode('⠔')],
    '…' => &[decode_unicode('⠠'), decode_unicode('⠠'), decode_unicode('⠠')], // 변경
    '⋯' => &[decode_unicode('⠠'), decode_unicode('⠠'), decode_unicode('⠠')], // 유지

이슈에서 말했듯 2024 개정 한국 점자 규정에서 53항 정의에 사용되는 가운뎃점이라 표기한 기호는 U+22EF가 아닌 U+2026이므로 기존 매핑을 변경했습니다.

다만 U+22EF는 그대로 유지해두었는데요.
혹시나 U+22EF를 가운뎃점으로 쓴 줄임표로 사용하는 경우가 존재할 수도 있다 생각해 유지했습니다.

또한 유닛테스트에도 이를 반영해두었습니다.

        assert_eq!(
            encode_char_symbol_shortcut('…').unwrap(),
            &[
                decode_unicode('⠠'),
                decode_unicode('⠠'),
                decode_unicode('⠠')
            ]
        );
        assert_eq!(
            encode_char_symbol_shortcut('⋯').unwrap(),
            &[
                decode_unicode('⠠'),
                decode_unicode('⠠'),
                decode_unicode('⠠')
            ]
        );

이렇게 변경한 직후엔 오히려 기존에 성공하던 49항 8번이 실패하였고 그 이유는 3번에서 후술하겠습니다.

2️⃣······……같이 2번 연속으로 사용된 줄임표를 1개로 취급하도록 처리 (53항)

    fn encode_word(
        &mut self,
        word: &str,
        prev_word: &str,
        remaining_words: &[&str],
        skip_count: &mut usize,
        result: &mut Vec<u8>,
    ) -> Result<(), String> {
        // 제53항 가운뎃점으로 쓴 줄임표(…… , …)는 ⠠⠠⠠으로, 마침표로 쓴 줄임표(...... , ...)는 ⠲⠲⠲으로 적는다.
        let normalized_word = word
            .replace("......", "...")
            .replace("……", "…");
        let word = normalized_word.as_str();

줄임표 점의 개수를 분명히 밝혀야 할 때에는 ⠠이나 ⠲을 묵자의 개수만큼 적는다.

이슈에서 말씀드린 바와 같이 53항 다만은 맥락을 파악한 뒤에 변환이 가능한 부분이라 판단했기에
전체 문장에서 2번 연속해서 등장하는 줄임표들을 모두 줄임표 하나로 교체했습니다.

최대한 원래 코드 및 주석 스타일을 반영해 추가했는데, 추가로 피드백 주신다면 반영하겠습니다.
이 부분을 수정한 뒤엔 기존에 실패하던 49항 43번과 44번, 53항의 2번이 성공했습니다.

image

3️⃣49항 8번 항목 테스트의 잘못된 정답 수정 후 정상 동작 확인

image

가운뎃점으로 쓴 줄임표는 ⠠⠠⠠로 변환되어야 옳지만 ⠲⠲⠲가 정답이라 되어있어 수정했습니다.

기존에 통과됐던 테스트 중 하나가 사실은 잘못된 테스트였던 것이죠.

// rule_49.csv
"… , ...",",,,, 444",5050500160505050,⠲⠲⠲⠀⠐⠀⠲⠲⠲ // 변경 전
"… , ...",",,,, 444",3232320160505050,⠠⠠⠠⠀⠐⠀⠲⠲⠲ // 변경 후

이 부분을 수정하니 49항 8번 테스트가 성공했습니다.
image

@owjs3901 추가로 작업이 필요하거나 부족한 부분 피드백 해주신다면 반영하겠습니다.

- 기존 유닛테스트도 변경
- ⋯ U+22EF 기호는 여전히 남겨둠
- U+22EF 유닛테스트 추가
- 그럼에도 여전히 53항에서 1/4 통과율을 보임
- 이전 fix 후 test 시 49항에서 1개가 오히려 실패하는 경향을 보이는데, 이건 테스트 정답이 잘못된 것으로 보임
- 가운뎃점으로 쓴 줄임표 U+2026 기호에 대응되는 점자 ⠠⠠⠠가 아닌, 마침표로 쓴 줄임표 ⠲⠲⠲가 있어서 수정
- 505050016050505에서 3232320160505050으로 수정
- 수정 후 정상 통과 확인
@codecov
Copy link

codecov bot commented Jan 20, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

Files with missing lines Coverage Δ
libs/braillify/src/lib.rs 92.66% <100.00%> (ø)
libs/braillify/src/symbol_shortcut.rs 90.00% <ø> (ø)

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Contributor

Changepacks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

'가운뎃점으로 쓴 줄임표'가 실제로는 '마침표로 쓴 줄임표'인 U+2026이라 53항이 실패하는 문제

1 participant