Crate tossicat

source ·
Expand description

TossiCat Core

토시를 같이 입력된 단어에 맞춰 변환해 주는 모듈

이 모듈은 임의의 단어와 그 단어에 붙일 조사(즉 토시)를 입력하면, 입력한 조사를 같이 입력한 단어에 자연스러운 형태로 바꿔서 적절하게 변환하는 라이브러리입니다.

변환할 토시가 여러개 들어 있는 문장을 아래와 같은 형식으로 입력하면,

"{철수, 은} {영희, 과} {밥, 를} 먹습니다."

다음과 같이 변경해 줍니다.

"철수는 영희처럼 밥을 먹습니다."

이것은 modify_sentence() 함수가 맡습니다. 아래와 같이 사용하시면 됩니다.

use tossicat::modify_sentence;

let test = "{철수, 은} {영희, 과} {밥, 를} 먹습니다.";
let result = Ok("철수는 영희와 밥을 먹습니다.".to_string());
assert_eq!(result, modify_sentence(test));

앞에서처럼 문장을 다루는 것이 아니라 단순하게 특정 단어에 특정 토시를 붙일 때 어떻게 변환해야 하는 것인지를 알고 싶은 경우도 있습니다. 이런 경우에 사용할 함수는 postfix()입니다.

use tossicat::postfix;

let result = Ok("사과를".to_string());
assert_eq!(result, postfix("사과", "을"));

현재 단어의 마지막 글자가 한글과 숫자라면 아무런 문제 없이 같이 입력된 토시를 적절하게 변경해줄 수 있습니다. 그런데 입력된 단어 전체가 영어와 같은 외국어 단어로 되어 있거나 마지막 글자가 외국어라면, 에러를 발생하지 않고 아래와 같이 토시를 병기해 처리합니다. 따라서 외국어를 사용하는데도 문제가 발생하지 않습니다.

use tossicat::postfix;

let test = postfix("apple", "을");
let result = Ok("apple(을)를".to_string());
assert_eq!(test, result);

use tossicat::modify_sentence;

let test = "{철수, 은} {apple, 를} 먹습니다.";
let result = Ok("철수는 apple(을)를 먹습니다.".to_string());
assert_eq!(result, modify_sentence(test));

이 두 개의 함수가 이 라이브러리의 가장 중요한 기능입니다. 이 라이브러리에서 구현하고 있는 중요한 함수는 다음과 같습니다.

  • modify_sentence(): 입력된 문장에 포함된 1개 이상의 토시를 같이 입력된 단어에 맞게 전환해 입력된 문장을 바꿔 반환하는 함수
  • postfix(): 입력된 토시를 같이 입력된 단어에 맞게 변환해, 입력된 단어와 합쳐 반환하는 함수

위의 기능을 구현하기 위해서 작성한 몇개의 함수도 같이 공개합니다. 자세한 내용은 각 함수 설명을 참고하세요.

Modules

  • 괄호에 들어 있는 단어와 토시를 다루는 모듈

Functions

  • 숫자를 한글 표기법으로 바꿔주는 함수
  • 입력된 문자열에서 마지막 글자를 찾아 주는함수
  • 종성만 찾아서 도출해주는 함수
  • 초, 중, 종성을 한글 한 글자로 합쳐주는 함수
  • 입력된 한 글자에서 그 글자의 종성을 바꿔주는 함수
  • 변경할 토시가 여러 개 들어 있는 문장을 적절한 토시로 변경해 문장을 반환하는 함수
  • 입력된 토시를 같이 입력된 단어에 맞게 변환해, 입력된 단어와 합쳐 반환하는 함수
  • 한글 한 글자를 초, 중, 종성으로 분리해 주는 함수