# 본 문서에 대하여 이 문서는 이 프로젝트의 기능을 상세히 설명하고 각 버전에서 바뀐 점들을 설명하고자 합니다. 아직 버전이 `0.*`입니다. 베타 상태라고 생각하시면 됩니다. 물론 지금까지 구현된 것도 사용하시는데 문제가 없지만, 아직 염두에 두고 있는 기능을 다 구현하지 못했기 때문에 개발팀은 베타로 생각하고 있습니다. 곧 `1.*`이 될 것 같습니다. ## 처리할 수 있는 토시 목록에 대하여 이 라이브러리에서 처리할 수 있는 토시들은 아래와 같이 3 종류로 분류할 수 있습니다. 첫 번째로 "변환할 필요가 없는 토시들"이 있습니다. 여기에 속하는 토시들은 어떤 단어에 붙여서 사용해도 문제가 되지 않습니다. 그러나 두 번째 종류인 "변환 가능한 토시들"에 속한 토시들은 어떤 단어에 붙일 것인가에 따라 같은 의미를 가진 다른 토시로 변환해야 합니다. 이 프로젝트는 이 두 종류의 토시를 다 처리할 수 있기 때문에, 어떤 토시를 변환해야 하는지, 어떤 토시는 변환할 필요가 없는 것인지를 판단하고 변환해야할 토시라면 적절하게 변환해 줍니다. 그리고 마지막으로 "변환을 고려해야 하는 괄호가 들어 있는 토시들"이 있습니다. 이것은 특수한 목적으로 토시를 2중적으로 표현하기 위해, 예를 들어 apple과 같이 외국어 단어가 입력되었을 경우 그 단어의 발음을 정확하게 알 수 없기 때문에, "(을)를"과 같이 토시를 병기해 변환하는 경우가 있을 수 있습니다. 이런 경우에 대비하여 괄호가 들어 있는 토시를 따로 분류하고 있습니다. 이 라이브러리는 여기에 속하는 토시들도 잘 처리해서 적절한 토시를 반환할 수 있습니다. ## Version 0.6.1 (2024-11-09) ### transform 함수 추가 - 입력된 것들을 참고해 `word`에 적절한 `tossi`를 변형하여 각각 반환하는 함수를 추가했습니다. ## Version 0.6.0 (2023-2-10) ### 변하는 토시 추가 - "라고", "이라고" 토시 - "일랑" 토시 ### 안 변하는 토시 추가 - "만큼" - "한테로" - "게서" ## Version 0.5.1 (2023-2-8) ### 토시 "인즉" 추가 토시 "인들"과 같은 방식으로 처리하는 토시입니다. 이제 처리할 수 있는 토시 숫자가 79개가 되었습니다. ## Version 0.5.0 (2023-2-6) ### '가' / '이'를 처리할 때 발생하는 특수한 예외 상황 처리 "나", "누구", "저"와 같은 것에 토시 ‘가’를 붙여야 하는 경우 토시를 붙여야 하는 것, "나", "누구", "저"이 "내가", "누가", "제가"와 같이 변해야 합니다. 그러나 지금까지는 `pick()` 함수로는 이런 상황을 처리할 수 없었지만, 그러나 이제는 `pick()` 함수를 제거했기 때문에 이런 상황도 처리할 수 있개 되었습니다. ### 토시 "인들" 추가 이 토시 또한 토시를 적용할 단어를 바꾸기 때문에 처리할 수 없었지만 이제는 처리할 수 있게 되어서 이 토시 변환도 처리할 수 있는 코드를 넣게 되었습니다. 이제 처리할 수 있는 토시 숫자가 78개가 되었습니다. ## Version 0.4.7 (2023-1-30) ### `pick()` 제거 특정 토시(조사)에서 그 토시를 붙일 단어도 같이 변화는 경우가 있습니다. 이런 경우에 `pick()` 함수가 적절한 역할을 할 수 없습니다. 따라서 이 함수를 제거하기로 했습니다. 이 함수를 제거하면서 위와 같이 단어도 변화하는 상황도 적절하게 대처할 수 있게 됩니다. 다음 버전에서는 이러한 것들을 지원할 예정입니다. ## Version 0.4.6 (2023-1-17) - [issue #10 `Err()` 중복 문제](https://github.com/tossicat/tossicat-core/issues/10)를 해결했습니다. ## Version 0.4.5 (2023-1-14) - `lib.rs` 파일에서 `postfix()`에 대한 설명 코드 문제점 해결합니다. - `README.md` 파일에서 함수 사용 결과를 현재 버전에 맞게 수정합니다. ## Version 0.4.4 (2023-1-14) - `postfix()`, `pick()`에서 에러가 발생할 때, 이를 `Result`로 처리합니다. - 위 두 함수가 `Result`로 처리한 에러를 `modify_sentence()`이 받아서 `Err()`를 이용해 반환합니다. ## Version 0.4.3 (2023-1-12) - 이제 `modify_sentence()`에서 에러가 발생할 때, 이를 `Result`로 처리합니다. - 여러 개를 변환하기 중괄호로 단어와 토시가 들어올 때, 토시 또는 이 토시를 붙일 단어가 없는 경우, 각각의 경우에 따라 다른 에러를 `Err()`를 이용해 반환하게 됩니다. ## Version 0.4.2 (2023-1-11) 설명 추가 및 설명 코드 추가. 현재 적절하게 `modify_sentence()`에서 에러가 발생할 때, 이를 처리할 `Result`을 완전히 구현하지 못했습니다. 빠르게 완료하겠습니다. ## Version 0.4.0 (2023-1-11) ### `modify_sentence()` 함수 추가 `modify_sentence()`를 추가했습니다. 이 함수는 변경해야 할 토시가 1개 이상 들어 있는 문장을 아래와 같이 입력한 경우 모든 토시를 적절하게 변환해서 반환하는 함수입니다. 아래 설명 파일을 보면 어떻게 사용할 수 있는 확인할 수 있습니다. ```rust use tossicat::modify_sentence; let test = "{철수, 은} {영희, 과} {밥, 를} 먹습니다."; let testing = modify_sentence(test); ``` ## Version 0.3.2 (2022-12-29) - 공개된 함수 모두 설명을 추가합니다. ## Version 0.3.1 (2022-12-26) - [https://docs.rs/tossicat/]에 Version 0.3.0 문서가 올라가지 않아서 `Cargo.toml`안의 "documentation"를 적용합니다. ## Version 0.3.0 (2022-12-26) - 현재 프로젝트에서 불필요한 함수를 제거했습니다. - 함수 설명을 추가했습니다. - `Cargo.toml`안의 "keywords"를 정리했습니다. 처리할 수 있는 토시 숫자는 Version 0.2.0과 동일 합니다. 자세한 토시 목록은 아래를 참고하세요. 현재 처리할 수 있는 토시 숫자는 다음과 같습니다. 참고로 프로젝트가 성장하면서 그 숫자가 변할 수 있습니다. 현재 총 112개의 토시를 처리할 수 있습니다. 엄격하게 말하면 괄호가 들어 있는 토시는 반복된 토시를 처리하기 위해 존재하는 것이라고 한다면, 정확하게 1번과 2번만 합쳐 총 77개의 토시를 처리할 수 있다고 말할 수 있습니다. 1.변환을 고려해야 하는 토시들: 46 개 - 을 / 를 - 다 / 이다 - 이 / 가 - 은 / 는 - 나 / 이나 - 이나마 / 나마 - 니 / 이니 - 이라도 / 라도 - 이랑 / 랑 - 이란 / 란 - 이라야 / 라야 - 이며 / 며 - 이야말로 / 야말로 - 이고 / 고 - 이든 / 든 - 이든가 / 든가 - 이든지 / 든지 - 이여 / 여 - 와 / 과 - 로 / 으로 - 로서 / 으로서 - 로써 / 으로써 - 로부터 / 으로부터 ```json ["가", "고", "과", "나", "나마", "는", "니", "다", "든", "든가", "든지", "라도", "라야", "란", "랑", "로", "로부터", "로서", "로써", "를", "며", "야말로", "여", "와", "으로", "으로부터", "으로서", "으로써", "은", "을", "이", "이고", "이나", "이나마", "이니", "이다", "이든", "이든가", "이든지", "이라도", "이라야", "이란", "이랑", "이며", "이야말로", "이여"] ``` 2.변환할 필요가 없는 토시들: 31 개 ```json ["같이", "거나", "게", "까지", "께", "께서", "대로", "도", "마냥", "마다", "마저", "만", "밖에", "보다", "부터", "뿐", "에", "에게", "에게로", "에게서", "에다가", "에서", "에서부터", "의", "이다", "조차", "처럼", "커녕", "하고", "한테", "한테서"] ``` 3.변환을 고려해야 하는 괄호가 들어 있는 토시들: 35개 ```json ["(가)이", "(과)와", "(는)은", "(를)을", "(와)과", "(으)로", "(으)로부터", "(으)로서", "(으)로써", "(은)는", "(을)를", "(이)가", "(이)고", "(이)나", "(이)나마", "(이)니", "(이)다", "(이)든", "(이)든가", "(이)든지", "(이)라도", "(이)라야", "(이)란", "(이)랑", "(이)며", "(이)야말로", "(이)여", "가(이)", "과(와)", "는(은)", "를(을)", "와(과)", "은(는)", "을(를)", "이(가)"] ``` ## Version 0.2.0 (2022-12-19) 아래와 같은 토시를 처리할 수 있게 되었습니다. 자세한 토시 목록은 아래를 참고하세요. 현재 처리할 수 있는 토시 숫자는 다음과 같습니다. 참고로 프로젝트가 성장하면서 그 숫자가 변할 수 있습니다. 현재 총 112개의 토시를 처리할 수 있습니다. 엄격하게 말하면 괄호가 들어 있는 토시는 반복된 토시를 처리하기 위해 존재하는 것이라고 한다면, 정확하게 1번과 2번만 합쳐 총 77개의 토시를 처리할 수 있다고 말할 수 있습니다. 1. 변환을 고려해야 하는 토시들: 46 개 2. 변환할 필요가 없는 토시들: 31 개 3. 변환을 고려해야 하는 괄호가 들어 있는 토시들: 35개 ### 현재 처리할 수 있는 토시 1.변환을 고려해야 하는 토시들 - 을 / 를 - 다 / 이다 - 이 / 가 - 은 / 는 - 나 / 이나 - 이나마 / 나마 - 니 / 이니 - 이라도 / 라도 - 이랑 / 랑 - 이란 / 란 - 이라야 / 라야 - 이며 / 며 - 이야말로 / 야말로 - 이고 / 고 - 이든 / 든 - 이든가 / 든가 - 이든지 / 든지 - 이여 / 여 - 와 / 과 - 로 / 으로 - 로서 / 으로서 - 로써 / 으로써 - 로부터 / 으로부터 ```json ["가", "고", "과", "나", "나마", "는", "니", "다", "든", "든가", "든지", "라도", "라야", "란", "랑", "로", "로부터", "로서", "로써", "를", "며", "야말로", "여", "와", "으로", "으로부터", "으로서", "으로써", "은", "을", "이", "이고", "이나", "이나마", "이니", "이다", "이든", "이든가", "이든지", "이라도", "이라야", "이란", "이랑", "이며", "이야말로", "이여"] ``` 2.변환할 필요가 없는 토시들 ```json ["같이", "거나", "게", "까지", "께", "께서", "대로", "도", "마냥", "마다", "마저", "만", "밖에", "보다", "부터", "뿐", "에", "에게", "에게로", "에게서", "에다가", "에서", "에서부터", "의", "이다", "조차", "처럼", "커녕", "하고", "한테", "한테서"] ``` 3.변환을 고려해야 하는 괄호가 들어 있는 토시들 ```json ["(가)이", "(과)와", "(는)은", "(를)을", "(와)과", "(으)로", "(으)로부터", "(으)로서", "(으)로써", "(은)는", "(을)를", "(이)가", "(이)고", "(이)나", "(이)나마", "(이)니", "(이)다", "(이)든", "(이)든가", "(이)든지", "(이)라도", "(이)라야", "(이)란", "(이)랑", "(이)며", "(이)야말로", "(이)여", "가(이)", "과(와)", "는(은)", "를(을)", "와(과)", "은(는)", "을(를)", "이(가)"] ```