seshat-unicode 0.2.0

A Unicode Library for Rust. Unicode 15.1.0 ready. XID_Start and XID_Continue are also available.
Documentation
# Seshat 𓋇𓏏𓁐

[![crates.io](https://img.shields.io/crates/v/seshat-unicode.svg)](https://crates.io/crates/seshat-unicode)

![logo](https://raw.githubusercontent.com/hardboiled65/Seshat/master/docs/seshat-logo.png)

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.1.0.

## Usage

```toml
[dependencies]
seshat-unicode = "0.2.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());
}
```

### Properties

```rust
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,

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

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


## 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.](https://github.com/frybitsinc).

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