seshat-unicode

Crates.ioseshat-unicode
lib.rsseshat-unicode
version0.3.1
sourcesrc
created_at2020-07-15 09:06:08.419782
updated_at2024-10-15 04:49:23.016773
descriptionA Unicode Library for Rust. Unicode 16.0.0 ready. XID_Start and XID_Continue are also available.
homepage
repositoryhttps://github.com/aspschn/seshat-unicode
max_upload_size
id265362
size7,837,272
Aspen Schneider (aspschn)

documentation

README

Seshat 𓋇𓏏𓁐

crates.io

logo

A Unicode Library for Rust.

Introduction

Seshat (pronounce as Sehs-hat) is a Unicode library that written in Rust. It provides many of Unicode character data and standard algorithms. The goal of this project is to provide a ICU-like library in Rust.

Version

Seshat follows the latest version of Unicode. Currently using version 16.0.0.

Usage

[dependencies]
seshat-unicode = "0.3.1"
use seshat::unicode::Ucd;

fn main() {
    println!("πŸ¦€ is {}!", 'πŸ¦€'.na());
}

Check the Unicode Version

use seshat::unicode::UNICODE_VERSION;

fn main() {
    println!("{}", UNICODE_VERSION.to_string());
}

Features

Grapheme cluster break

use seshat::unicode::Segmentation;

fn main() {
    let s = "Hi, πŸ‘¨πŸΎβ€πŸ€β€πŸ‘¨πŸΏ";
    for seg in s.break_graphemes() {
        println!("{}", seg);
    }
}

This will prints

$ cargo run
H
i
,
 
πŸ‘¨πŸΎβ€πŸ€β€πŸ‘¨πŸΏ

Normalization

use seshat::unicode::Normalization;

fn main() {
    let s1 = "Γ…";
    println!("{:?}", s1.to_nfd()); // Will prints "A\u{30a}"

    let s2 = "γŒ€";
    println!("{}", s2.to_nfkd()); // Will prints γ‚’γƒγ‚šγƒΌγƒˆ

    let s3 = "e\u{0301}";
    println!("{}", s3.to_nfc()); // Will prints Γ©

    let s4 = "アイウエ。";
    assert_eq!("をむウエγ‚ͺ", s4.to_nfkc());
}

Properties

use seshat::unicode::Ucd;

fn main() {
    let c = 'Ν΄';    // U+0374 GREEK NUMERAL SIGN
    assert_eq!(c.xids(), true); // XID_Start property of the character.
}

For enumeration property,

use seshat::unicode::Ucd;
use seshat::unicode::props::Gc;

fn main() {
    assert_eq!('A'.gc(), Gc::Lu);
    assert_eq!('a'.gc(), Gc::Ll);
}

Patches

0.2.1 - Exclude the tools/ directory which should not be included when publishing.

Contribute

Add later.

License

All logo images have copyright owned by their creators and should not be used out of this project without permission.

The drawing part (writing goddess) by Frybits Inc..

Seshat is developed under MIT License. For the detail, see the LICENSE file.

Commit count: 123

cargo fmt