스트리밍 API

모든 convert_*_to_string 메서드는 반환하기 전에 전체 출력을 버퍼링합니다. 이터레이터 변종은 출력을 토큰 단위로 처리하게 해 주는데, 이는 큰 문서나 싱크에 점진적으로 써야 할 때 유용합니다.

텍스트 이터레이터

use gukhanmun::{Builder, Preset};

let converter = Builder::with_preset(Preset::KoKr).build()?;

let mut output = String::new();
for token in converter.convert_text_iter("漢字를 한글로") {
    output.push_str(token.as_str());
}

convert_text_iterimpl Iterator<Item = RenderedToken>을 반환합니다. 각 RenderedToken은 그 토큰의 출력 텍스트를 담은 문자열 슬라이스를 들고 있습니다.

HTML과 Markdown 이터레이터

use gukhanmun::MarkdownVariant;

// HTML
for token in converter.convert_html_fragment_iter("<p>漢字</p>")? {
    print!("{}", token.as_str());
}

// Markdown
for token in converter.convert_markdown_iter("# 漢字", MarkdownVariant::Gfm) {
    print!("{}", token.as_str());
}

형식 중립적 토큰 파이프라인

convert_tokensInputToken의 임의 이터레이터를 받아 RenderedToken의 이터레이터를 반환합니다. 이는 가장 저수준의 진입점이며, 사용자 정의 리더에서 미리 토큰화된 입력을 제공하게 해 줍니다:

use gukhanmun::{InputToken, RenderedToken};

let tokens: Vec<InputToken<&str>> = /* 使用者의 토크나이저 出力 */;
for rendered in converter.convert_tokens(tokens.into_iter()) {
    print!("{}", rendered.as_str());
}

형식 어댑터(gukhanmun-html, gukhanmun-markdown)는 내부적으로 이를 사용합니다.

토큰 종류

종류설명
InputToken입력 단위: 한자 연속, 한글 텍스트, 섞인 텍스트, 블록 경계, 또는 섹션 경계
OutputToken사전 찾기와 병기 이후의 단위: 병기된 한자, 순수 텍스트, 또는 경계 표지
RenderedToken렌더링 이후의 출력 텍스트 단위; 최종 문자열을 담습니다