generated from ttipo/project-base
feat(flutter): 조사 도우미가 호환 자모 · 숫자의 받침도 고른다
웹 조사 도우미(frontend shared/utils/korean.ts)와 짝으로 맞춘다. 초성 검색어(‘ㄱㅁ’)나 숫자로 끝나는 말이 "(으)로" · "이(가)" 꼴로 나오지 않게, 호환 자모 자음은 받침 있음 (ㄹ 은 "로"), 모음은 받침 없음, 숫자는 읽는 소리(영 · 일 · 이 …)로 고른다. 라틴 글자 · 기호로 끝나면 지금처럼 괄호 꼴이다. 알려진 한계: 라틴 글자 뒤의 숫자도 한국어 소리로 센다(‘녹음.mp3’은). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -250,7 +250,7 @@ void main() {
|
||||
);
|
||||
});
|
||||
|
||||
test('은/는 — 받침에 맞추고, 한글로 끝나지 않으면 "은(는)"', () {
|
||||
test('은/는 — 받침에 맞추고, 소리를 모르는 끝 글자(라틴 글자 · 기호)면 "은(는)"', () {
|
||||
expect(topicParticle('사진'), '은');
|
||||
expect(topicParticle('보고서'), '는');
|
||||
expect(topicParticle('외 2개'), '는');
|
||||
|
||||
@@ -108,6 +108,49 @@ void main() {
|
||||
expect(directionParticle('프로젝트'), '로');
|
||||
expect(directionParticle('Archive'), '(으)로');
|
||||
});
|
||||
|
||||
test('한글 자모 · 숫자는 읽는 소리로 — 자음은 받침 있음(ㄹ 은 "로"), 모음은 받침 없음', () {
|
||||
// 끝 글자 → 이/가 · 으로/로 · 은/는
|
||||
for (final (String last, String subject, String direction, String topic)
|
||||
in <(String, String, String, String)>[
|
||||
('ㄱ', '이', '으로', '은'), // 기역
|
||||
('ㄹ', '이', '로', '은'), // 리을
|
||||
('ㅁ', '이', '으로', '은'), // 미음
|
||||
('ㄳ', '이', '으로', '은'), // 기역시옷 — 겹자음도 받침 있음
|
||||
('ㅏ', '가', '로', '는'), // 아
|
||||
('0', '이', '으로', '은'), // 영
|
||||
('1', '이', '로', '은'), // 일
|
||||
('2', '가', '로', '는'), // 이
|
||||
('3', '이', '으로', '은'), // 삼
|
||||
('4', '가', '로', '는'), // 사
|
||||
('5', '가', '로', '는'), // 오
|
||||
('6', '이', '으로', '은'), // 육
|
||||
('7', '이', '로', '은'), // 칠
|
||||
('8', '이', '로', '은'), // 팔
|
||||
('9', '가', '로', '는'), // 구
|
||||
]) {
|
||||
expect(subjectParticle(last), subject, reason: last);
|
||||
expect(directionParticle(last), direction, reason: last);
|
||||
expect(topicParticle(last), topic, reason: last);
|
||||
}
|
||||
// 낱말의 끝 글자로 본다 — 초성 검색어 · 번호로 끝나는 이름
|
||||
expect(directionParticle('ㄱㅁ'), '으로');
|
||||
expect(subjectParticle('ㄱㅁ'), '이');
|
||||
expect(directionParticle('프로젝트1'), '로');
|
||||
expect(subjectParticle('2026'), '이');
|
||||
// 라틴 글자 · 기호는 소리를 몰라 지금처럼
|
||||
expect(subjectParticle('ARA'), '이(가)');
|
||||
expect(directionParticle('100%'), '(으)로');
|
||||
expect(topicParticle('v'), '은(는)');
|
||||
});
|
||||
|
||||
test('끝의 공백은 떼고 보고, 따옴표 · 괄호는 떼지 않는다 — 그 글자로 끝나면 소리를 몰라 "이(가)" 꼴', () {
|
||||
expect(subjectParticle('계약 '), '이');
|
||||
expect(directionParticle('ㄹ '), '로');
|
||||
expect(subjectParticle('계약)'), '이(가)');
|
||||
expect(subjectParticle('"계약"'), '이(가)');
|
||||
expect(directionParticle('(2)'), '(으)로');
|
||||
});
|
||||
});
|
||||
|
||||
group('여러 통 처리의 알림 글 (웹 mail-bulk.ts 와 같다)', () {
|
||||
|
||||
Reference in New Issue
Block a user