-
Notifications
You must be signed in to change notification settings - Fork 94
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: 한국어를 로마자로 변환해주는 함수와 한국어를 표준 발음법으로 변환해주는 함수를 만들고 문서화를 진행합니다 #115
Merged
Merged
Changes from all commits
Commits
Show all changes
87 commits
Select commit
Hold shift + click to select a range
a84aa32
test: 음성 표기법 테스트 코드 작성
po4tion c3cef13
test: isNotUndefined 유틸 구현
po4tion 51d51c2
test: 단일자모 테스트 케이스 추가
po4tion 6bb2d6f
test: 단일 자모 테스트 케이스 수정
po4tion 5d8d43e
feat: 음성 표기법 기능 구현
po4tion a3cb9e4
feat: 음절분해 속 disassembleCompleteHangulCharacter 함수는 undefined일 수 없음
po4tion e38d3f2
feat: 다음 음절 변수 조건식 강화
po4tion 9eeeb02
refactor: 16항 -1 인덱스 조건 처리
po4tion e0c48f6
refactor: 16항 조건문 상수화하여 축약
po4tion 26eba31
refactor: 음의 동화 조건 상수화
po4tion 27d074f
refactor: ㄴ,ㄹ이 덧나는 경우 조건 상수화
po4tion 20f6262
refactor: 19항 조건문 상수화
po4tion 8cad213
refactor: 18항 조건문 상수화
po4tion 6f015be
refactor: 20항 유음화 조건문 순서 수정
po4tion 33f1f1f
refactor: 12항 조건에 상수화 적용
po4tion ce842cf
refactor: 13,14항 상수화 및 반환타입추론
po4tion 773d9aa
refactor: 9,10,11항 조건문 상수화
po4tion 04ac092
refactor: internal 함수 사용
po4tion 5c561dd
docs: phoneticNotation 문서 작성
po4tion e96540e
test: covertToRoman 테스트 코드 작성
po4tion bf70737
test: convertToRoman 테스트 케이스 추가
po4tion f1306ad
feat: convertToRoman 구현
po4tion 636e6ae
refactor: 음절분해 return type 명시
po4tion 91c741a
test: 테스트 케이스 수정
po4tion 3a7b97c
docs: romanize
po4tion caafd59
refactor: convertToRoman에서 romanize로 이름을 변경합니다.
po4tion 3a07edd
Merge branch 'main' into feat-33
po4tion 7d868af
refactor: phoneticNotation에서standardPronunciation으로 이름을 변경합니다
po4tion bada590
feat: type guard include 함수를 구현합니다
po4tion 08bdfac
test: 경음화를 적용합니다
po4tion 9336cf3
feat: 경음화 기능을 옵션으로 추가합니다
po4tion b5933c7
refactor: 표준발음 함수에서 사용되는 상수를 상수파일로 이동
po4tion cac4dec
docs: 함수 설명문 수정
po4tion 97dbd73
docs: 표준발음법 문서 수정
po4tion 1e96194
docs: 표준 발음법 영문 문서의 주석을 변경합니다
po4tion 57ca6d4
test: isIncludedInArray 테스트 코드를 작성합니다
po4tion 5b8451d
Merge branch 'main' into feat-33
po4tion 1bc3dd2
fix: 특정회사 언급 문자 제거
po4tion cf7229d
fix: 보다 간결하게 isIncludedInArray > arrayIncludes로 이름 변경
po4tion 7cde584
fix: standardPronunciation 상수와 관련하여 새파일을 만든다
po4tion 3221865
fix: map 메소드를 축약한다
po4tion dd60617
fix: arrayIncludes > isArrayIncludes로 이름을 변경
po4tion c7b3964
fix: arrayIncludes 함수를 개선합니다
po4tion 5da65f6
fix: romanize 가독성을 개선합니다
po4tion 2d24650
fix: romanize > romanizeHangul #121
po4tion f0cc6fa
refactor: 경음화 로직 분리
po4tion 28629f8
refactor: nextSyllabel 연산 로직 축약
po4tion d4bcb7e
refactor: 16항 로직 분리
po4tion ac7c622
refactor: 17,19항 로직을 분리합니다
po4tion 157cd60
refactor: 18항 로직을 분리합니다.
po4tion 599d2ea
refactor: 불필요한 조건문 return 제거
po4tion 8e3ca63
refactor: 12항 로직 분리
po4tion 7af330c
refactor: 13,14 항 로직을 분리합니다
po4tion 7733045
refactor: 9,10,11항 로직 분리
po4tion f7b6fc7
refactor: standardPronunciation 기능을 개별 폴더로 분리합니다
po4tion 52145d7
refactor: ㄴ,ㄹ 동화작용 설명 추가
po4tion 4016ea0
refactor: standardPronunciation 조건문 중복 처리
po4tion bd5a230
test: 경음화 등의 된소리를 적용하지 않는 테스트 케이스 추가
po4tion cda3174
refactor: 주요 로직 추상화
po4tion 938a360
fix: romanizeHangul에 일관된 변수명 적용 #131
po4tion e08251c
test: 한글과 영어가 혼합된 테스트 케이스를 추가합니다
po4tion 760a8d0
Merge branch 'main' into feat-33
po4tion d0ddda5
Merge branch 'main' into feat-33
po4tion 0ebff4a
Merge branch 'main' into feat-33
po4tion 609b2c0
test: 테스트 케이스 예시를 변경합니다
po4tion 4fcb62d
Merge branch 'main' into feat-33
po4tion 4845f09
fix: ㄴ/ㄹ이 덧나는 경우에도 연음규칙 적용이 가능
po4tion 1166ae4
fix: 주석 변경
po4tion 336a096
fix: 이해하기 쉬운 용어로 주석 변경
po4tion 3641f8b
feat: add romanize, standardPronunciation to named export
po4tion 59c79fd
fix: 메서드 컨벤션을 적용합니다 #132
po4tion 218f0a4
Merge branch 'main' into feat-33
po4tion 56d095f
fix: Received Object applyRules
po4tion 54494b7
fix: SRP 원칙 적용 - 1
po4tion 3e6ccca
refactor: replace받침ㅎ
po4tion b2ba29d
refactor: make pure function
po4tion d745e43
refactor: applyRules
po4tion d9bf16b
refactor: rule 별로 파일 분리
po4tion ccf004f
refactor: rule naming 변경
po4tion 3a53b3a
test: rules에 test case 추가
po4tion b80a3b9
fix: type import
po4tion 479f401
Merge branch 'main' into feat-33
po4tion b5529c1
fix: update import case
po4tion a298eb5
fix: isNotUndefined, defined, arrayIncludes를 internal로 이동합니다.
po4tion 89e18c9
test: romanize test case 수정
po4tion 9b154ea
solved conflict
po4tion eb1e80e
Create hip-pianos-live.md
okinawaa File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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": minor | ||
--- | ||
|
||
feat: 한국어를 로마자로 변환해주는 함수와 한국어를 표준 발음법으로 변환해주는 함수를 만들고 문서화를 진행합니다 |
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,28 @@ | ||
--- | ||
title: romanize | ||
--- | ||
|
||
# romanize | ||
|
||
Change the Hangul string to Roman. | ||
|
||
For detailed examples, see below. | ||
|
||
```typescript | ||
function romanize(hangul: string): string; | ||
``` | ||
|
||
## Examples | ||
|
||
```tsx | ||
romanize('백마'); // 'baengma' | ||
romanize('학여울'); // 'hangnyeoul' | ||
romanize('해돋이'); // 'haedoji' | ||
romanize('좋고'); // 'joko' | ||
romanize('압구정'); // 'apgujeong' | ||
romanize('구미'); // 'gumi' | ||
romanize('대관령'); // 'daegwallyeong' | ||
romanize('ㄱ'); // 'g' | ||
romanize('한국어!'); // 'hangugeo!' | ||
romanize('안녕하세요'); // 'annyeonghaseyo' | ||
``` |
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,28 @@ | ||
--- | ||
title: romanize | ||
--- | ||
|
||
# romanize | ||
|
||
한글 문자열을 로마자로 변경합니다. | ||
|
||
자세한 예시는 아래 Example을 참고하세요. | ||
|
||
```typescript | ||
function romanize(hangul: string): string; | ||
``` | ||
|
||
## Examples | ||
|
||
```tsx | ||
romanize('백마'); // 'baengma' | ||
romanize('학여울'); // 'hangnyeoul' | ||
romanize('해돋이'); // 'haedoji' | ||
romanize('좋고'); // 'joko' | ||
romanize('압구정'); // 'apgujeong' | ||
romanize('구미'); // 'gumi' | ||
romanize('대관령'); // 'daegwallyeong' | ||
romanize('ㄱ'); // 'g' | ||
romanize('한국어!'); // 'hangugeo!' | ||
romanize('안녕하세요'); // 'annyeonghaseyo' | ||
``` |
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,42 @@ | ||
--- | ||
title: standardizePronunciation | ||
--- | ||
|
||
# standardizePronunciation | ||
|
||
Change the Hangul string to standard pronunciation. | ||
|
||
For detailed examples, see below. | ||
|
||
```typescript | ||
function standardizePronunciation( | ||
// Input a Hangul string | ||
hangul: string, | ||
options: { | ||
// Set whether to apply hard sounds. Default is true." | ||
hardConversion: boolean; | ||
} = { hardConversion: true } | ||
): string; | ||
``` | ||
|
||
## Examples | ||
|
||
```tsx | ||
standardizePronunciation('디귿이'); // '디그시' | ||
standardizePronunciation('굳이'); // '구지' | ||
standardizePronunciation('담요'); // '딤뇨' | ||
standardizePronunciation('침략'); // '침냑' | ||
standardizePronunciation('먹는'); // '멍는' | ||
standardizePronunciation('신라'); // '실라' | ||
standardizePronunciation('놓고'); // '노코' | ||
standardizePronunciation('곧이듣다'); // '고지듣따' | ||
standardizePronunciation('곧이듣다', { hardConversion: false }); // '고지듣다' | ||
standardizePronunciation('닦다'); // '닥따' | ||
standardizePronunciation('닦다', { hardConversion: false }); // '닥다' | ||
standardizePronunciation('있다'); // '읻따' | ||
standardizePronunciation('있다', { hardConversion: false }); // '읻다' | ||
standardizePronunciation('핥다'); // '할따' | ||
standardizePronunciation('핥다', { hardConversion: false }); // '할다' | ||
standardizePronunciation('젊다'); // '점따' | ||
standardizePronunciation('젊다', { hardConversion: false }); // '점다' | ||
``` |
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,42 @@ | ||
--- | ||
title: standardizePronunciation | ||
--- | ||
|
||
# standardizePronunciation | ||
|
||
한글 문자열을 표준 발음법으로 변경합니다. | ||
|
||
자세한 예시는 아래 Example을 참고하세요. | ||
|
||
```typescript | ||
function standardizePronunciation( | ||
// 한글 문자열을 입력합니다. | ||
hangul: string, | ||
options: { | ||
// 경음화 등의 된소리를 적용할지 여부를 설정합니다. 기본값은 true입니다. | ||
hardConversion: boolean; | ||
} = { hardConversion: true } | ||
): string; | ||
``` | ||
|
||
## Examples | ||
|
||
```tsx | ||
standardizePronunciation('디귿이'); // '디그시' | ||
standardizePronunciation('굳이'); // '구지' | ||
standardizePronunciation('담요'); // '딤뇨' | ||
standardizePronunciation('침략'); // '침냑' | ||
standardizePronunciation('먹는'); // '멍는' | ||
standardizePronunciation('신라'); // '실라' | ||
standardizePronunciation('놓고'); // '노코' | ||
standardizePronunciation('곧이듣다'); // '고지듣따' | ||
standardizePronunciation('곧이듣다', { hardConversion: false }); // '고지듣다' | ||
standardizePronunciation('닦다'); // '닥따' | ||
standardizePronunciation('닦다', { hardConversion: false }); // '닥다' | ||
standardizePronunciation('있다'); // '읻따' | ||
standardizePronunciation('있다', { hardConversion: false }); // '읻다' | ||
standardizePronunciation('핥다'); // '할따' | ||
standardizePronunciation('핥다', { hardConversion: false }); // '할다' | ||
standardizePronunciation('젊다'); // '점따' | ||
standardizePronunciation('젊다', { hardConversion: false }); // '점다' | ||
``` |
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
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,81 @@ | ||
import { romanize } from './romanize'; | ||
|
||
describe('romanize', () => { | ||
it('자음 사이에서 동화 작용이 일어나는 경우', () => { | ||
expect(romanize('백마')).toBe('baengma'); | ||
expect(romanize('종로')).toBe('jongno'); | ||
expect(romanize('왕십리')).toBe('wangsimni'); | ||
expect(romanize('별래')).toBe('byeollae'); | ||
expect(romanize('신라')).toBe('silla'); | ||
}); | ||
|
||
it('ㄴ, ㄹ’이 덧나는 경우', () => { | ||
expect(romanize('학여울')).toBe('hangnyeoul'); | ||
expect(romanize('알약')).toBe('allyak'); | ||
}); | ||
|
||
it('구개음화가 되는 경우', () => { | ||
expect(romanize('해돋이')).toBe('haedoji'); | ||
expect(romanize('같이')).toBe('gachi'); | ||
expect(romanize('굳히다')).toBe('guchida'); | ||
}); | ||
|
||
it('"ㄱ, ㄷ, ㅂ, ㅈ"이 "ㅎ"과 합하여 거센소리로 소리 나는 경우', () => { | ||
expect(romanize('좋고')).toBe('joko'); | ||
expect(romanize('놓다')).toBe('nota'); | ||
expect(romanize('잡혀')).toBe('japyeo'); | ||
expect(romanize('낳지')).toBe('nachi'); | ||
}); | ||
|
||
it('된소리되기는 표기에 반영하지 않는다', () => { | ||
expect(romanize('압구정')).toBe('apgujeong'); | ||
expect(romanize('낙동강')).toBe('nakdonggang'); | ||
expect(romanize('죽변')).toBe('jukbyeon'); | ||
expect(romanize('낙성대')).toBe('nakseongdae'); | ||
expect(romanize('합정')).toBe('hapjeong'); | ||
expect(romanize('팔당')).toBe('paldang'); | ||
expect(romanize('샛별')).toBe('saetbyeol'); | ||
expect(romanize('울산')).toBe('ulsan'); | ||
}); | ||
|
||
it('"ㄱ, ㄷ, ㅂ"은 모음 앞에서는 "g, d, b"로, 자음 앞이나 어말에서는 "k, t, p"로 적는다', () => { | ||
expect(romanize('구미')).toBe('gumi'); | ||
expect(romanize('영동')).toBe('yeongdong'); | ||
expect(romanize('백암')).toBe('baegam'); | ||
expect(romanize('옥천')).toBe('okcheon'); | ||
expect(romanize('합덕')).toBe('hapdeok'); | ||
expect(romanize('호법')).toBe('hobeop'); | ||
expect(romanize('월곶')).toBe('wolgot'); | ||
expect(romanize('벚꽃')).toBe('beotkkot'); | ||
expect(romanize('한밭')).toBe('hanbat'); | ||
}); | ||
|
||
it('"ㄹ"은 모음 앞에서는 "r"로, 자음 앞이나 어말에서는 "l"로 적는다. 단, "ㄹㄹ"은 "ll"로 적는다', () => { | ||
expect(romanize('구리')).toBe('guri'); | ||
expect(romanize('설악')).toBe('seorak'); | ||
expect(romanize('칠곡')).toBe('chilgok'); | ||
expect(romanize('임실')).toBe('imsil'); | ||
expect(romanize('울릉')).toBe('ulleung'); | ||
expect(romanize('대관령')).toBe('daegwallyeong'); | ||
}); | ||
|
||
it('완성된 음절이 아닌 경우에는 그대로 반환한다', () => { | ||
expect(romanize('ㄱ')).toBe('g'); | ||
expect(romanize('가나다라ㅁㅂㅅㅇ')).toBe('ganadarambs'); | ||
expect(romanize('ㅏ')).toBe('a'); | ||
expect(romanize('ㅘ')).toBe('wa'); | ||
}); | ||
|
||
it('특수문자는 로마자 표기로 변경하지 않는다', () => { | ||
expect(romanize('안녕하세요.')).toBe('annyeonghaseyo.'); | ||
expect(romanize('한국어!')).toBe('hangugeo!'); | ||
expect(romanize('')).toBe(''); | ||
expect(romanize('!?/')).toBe('!?/'); | ||
}); | ||
|
||
it('한글과 영어가 혼합된 경우에는 영어는 그대로 반환된다', () => { | ||
expect(romanize('안녕하세요 es-hangul')).toBe('annyeonghaseyo es-hangul'); | ||
expect(romanize('한국은korea')).toBe('hangugeunkorea'); | ||
expect(romanize('고양이는cat')).toBe('goyangineuncat'); | ||
}); | ||
}); |
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
테스트 케이스 it으로 나눠주신것 감탄했습니다..!! 너무 좋네요 👍