Seshat πππ
=========
[](https://crates.io/crates/seshat-unicode)

A Unicode Library for Rust.
Demo
-----
[Seshat Web Demo](https://seshat-demo.herokuapp.com)
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 15.0.0.
Usage
---------
```toml
[dependencies]
seshat-unicode = "0.1.0"
```
```rust
use seshat::unicode::Ucd;
fn main() {
println!("π¦ is {}!", 'π¦'.na());
}
```
### Check the Unicode Version
```rust
use seshat::unicode::UNICODE_VERSION;
fn main() {
println!("{}", UNICODE_VERSION.to_string());
}
```
Features
---------
### Grapheme cluster break
```rust
use seshat::unicode::Segmentation;
fn main() {
let s = "Hi, π¨πΎβπ€βπ¨πΏ";
for seg in s.break_graphemes() {
println!("{}", seg);
}
}
```
This will prints
```sh
$ cargo run
H
i
,
π¨πΎβπ€βπ¨πΏ
```
### Normalization
```rust
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());
}
```
Contribute
---------
Add later.
License
---------
All logo images are copyright [Frybits Inc.](https://github.com/frybitsinc)
and should not be used out of this project without permission.
Seshat is developed under MIT License. For the detail, see the LICENSE file.