content-canonical 0.1.0

Content canonicalization and text normalization library
Documentation
use canonical::{
    canonicalize, collapse_whitespace, hash_text, tokenize, CanonicalizeConfig,
    CanonicalizedDocument,
};

fn main() {
    let raw_text = "  Café\tRUST!  ";

    let collapsed = collapse_whitespace(raw_text);
    println!("collapsed -> \"{collapsed}\"");

    let cfg = CanonicalizeConfig {
        strip_punctuation: true,
        ..Default::default()
    };

    let CanonicalizedDocument {
        doc_id: _,
        canonical_text,
        tokens: _tokens,
        sha256_hex,
        ..
    } = canonicalize("demo-helper", &collapsed, &cfg).expect("canonicalization succeeds");

    println!("canonical text -> \"{canonical_text}\"");
    println!("sha256 -> {sha256_hex}");

    let helper_tokens = tokenize(&canonical_text);
    println!("tokens via helper -> {helper_tokens:?}");

    let checksum_again = hash_text(&canonical_text);
    println!("hash_text helper -> {checksum_again}");
}