-
Notifications
You must be signed in to change notification settings - Fork 95
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: 영문 알파벳을 qwerty 자판에 매칭되는 한글로 변환하는 함수 추가 (#68)
* feat: declare map object `[engKeyboard]: korKeyboard` * feat: convertAlphabetToHangul 함수 생성 * fix: 쌍자/모음아닌 한글도 대문자 알파벳과 매핑 * test: 쌍/자모음에 대응하지 않는 알파벳 변환 테스트케이스 추가 * test: 분해된 한글 테스트 케이스를 추가합니다 * fix: remove white space at file name * feat: 쿼티 영어 알파벳을 한글로 변환하는 함수를 선언합니다 * docs: QWERTY_KEYBOARD_MAP 주석 변경 * fix: QWERTY_KEYBOARD_MAP 주석 typo 수정 * Create slimy-kiwis-watch.md --------- Co-authored-by: mimi99 <[email protected]> Co-authored-by: 박찬혁 <[email protected]>
- Loading branch information
1 parent
f056216
commit 0c784ff
Showing
4 changed files
with
156 additions
and
0 deletions.
There are no files selected for viewing
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
--- | ||
"es-hangul": patch | ||
--- | ||
|
||
feat: 영문 알파벳을 qwerty 자판에 매칭되는 한글로 변환하는 함수 추가 |
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
import { describe, expect, it } from 'vitest'; | ||
import { convertQwertyToHangul, convertQwertyToHangulAlphabet } from './convertQwertyToHangulAlphabet'; | ||
|
||
describe('convertQwertyToHangulAlphabet', () => { | ||
it('영어 알파벳을 한글 음소로 바꾼다.', () => { | ||
expect(convertQwertyToHangulAlphabet('abc')).toBe('ㅁㅠㅊ'); | ||
}); | ||
|
||
it('쌍/자모음에 대응하지 않는 영어 알파벳을 한글 음소로 바꾼다.', () => { | ||
expect(convertQwertyToHangulAlphabet('ABC')).toBe('ㅁㅠㅊ'); | ||
}); | ||
|
||
it('영어 알파벳은 한글 음소로 바꾸고, 한글 음절은 유지한다.', () => { | ||
expect(convertQwertyToHangulAlphabet('vm론트')).toBe('ㅍㅡ론트'); | ||
}); | ||
|
||
it('분해된 한글 음소는 유지한다.', () => { | ||
expect(convertQwertyToHangulAlphabet('ㅍㅡㄹㅗㄴㅌㅡ')).toBe('ㅍㅡㄹㅗㄴㅌㅡ'); | ||
}); | ||
|
||
it('영어 알파벳이 아닌 입력은 유지한다.', () => { | ||
expect(convertQwertyToHangulAlphabet('4월/20dlf!')).toBe('4월/20ㅇㅣㄹ!'); | ||
}); | ||
|
||
it('영문 대문자는 쌍자/모음으로 바꾼다.', () => { | ||
expect(convertQwertyToHangulAlphabet('RㅏㄱEㅜrl')).toBe('ㄲㅏㄱㄸㅜㄱㅣ'); | ||
expect(convertQwertyToHangulAlphabet('ㅇPdml')).toBe('ㅇㅖㅇㅡㅣ'); | ||
}); | ||
|
||
it('빈 문자열은 빈 문자열을 반환한다.', () => { | ||
expect(convertQwertyToHangulAlphabet('')).toBe(''); | ||
}); | ||
}); | ||
|
||
describe('convertQwertyToHangul', () => { | ||
it('영어 알파벳을 한글로 합성한다.', () => { | ||
expect(convertQwertyToHangul('abc')).toBe('뮻'); | ||
expect(convertQwertyToHangul('vmfhsxmdpsem')).toBe('프론트엔드'); | ||
}); | ||
|
||
it('쌍/자모음에 대응하지 않는 영어 알파벳을 한글로 합성한다.', () => { | ||
expect(convertQwertyToHangul('ABC')).toBe('뮻'); | ||
expect(convertQwertyToHangul('VMFHSXM')).toBe('프론트'); | ||
}); | ||
|
||
it('영어 알파벳은 한글로 합성하고, 한글 음절은 유지한다.', () => { | ||
expect(convertQwertyToHangul('vm론트')).toBe('프론트'); | ||
}); | ||
|
||
it('인자가 한글 음소면 한글로 합성한다.', () => { | ||
expect(convertQwertyToHangul('ㅍㅡㄹㅗㄴㅌㅡ')).toBe('프론트'); | ||
}); | ||
|
||
it('영문 대문자는 쌍자/모음에 대응하며 한글로 합성한다.', () => { | ||
expect(convertQwertyToHangul('RㅏㄱEㅜrl')).toBe('깍뚜기'); | ||
expect(convertQwertyToHangul('ㅇPdml')).toBe('예의'); | ||
}); | ||
|
||
it('빈 문자열은 빈 문자열을 반환한다.', () => { | ||
expect(convertQwertyToHangul('')).toBe(''); | ||
}); | ||
}); |
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
import { assembleHangul } from './assemble'; | ||
import { QWERTY_KEYBOARD_MAP } from './constants'; | ||
import { hasProperty } from './utils'; | ||
|
||
/** | ||
* @name convertQwertyToHangulAlphabet | ||
* @description | ||
* 영어 알파벳을 qwerty 자판과 매칭되는 한글 음소로 변환합니다. | ||
* @param word 한글 음소로 변환하고자 하는 영문 | ||
* @returns 영어 알파벳이 포함되지 않은 한글 음소, 음절, 기타 문자로 이루어진 문자열 | ||
*/ | ||
export function convertQwertyToHangulAlphabet(word: string): string { | ||
return word | ||
.split('') | ||
.map(inputText => (hasProperty(QWERTY_KEYBOARD_MAP, inputText) ? QWERTY_KEYBOARD_MAP[inputText] : inputText)) | ||
.join(''); | ||
} | ||
|
||
/** | ||
* @name convertQwertyToHangul | ||
* @description | ||
* 영어 알파벳을 qwerty 자판과 매칭과는 한글 문자와 문장으로 변환합니다. | ||
* @param word 한글 문장으로 변환하고자 하는 영문 | ||
* @returns qwerty 영어 알파벳을 변환하여 한글 규칙에 맞게 합성한 문자열 | ||
*/ | ||
export function convertQwertyToHangul(word: string): string { | ||
if (!word) { | ||
return ''; | ||
} | ||
return assembleHangul([...convertQwertyToHangulAlphabet(word).split('')]); | ||
} |