cranberry 0.1.0

A versatile Rust library for Russian Cyrillic transliteration
Documentation
# cranberry

**Cranberry** is a versatile Rust library for transliterating Russian Cyrillic text to Latin script, addressing the challenge of inconsistent romanization standards across different applications. The library provides multiple transliteration schemes while maintaining exceptional performance and ease of integration.




## Installation

Add to your `Cargo.toml`:

```toml
[dependencies]
cranberry = "0.1.0"
```

Or use cargo:

```bash
cargo add cranberry
```





## Usage

```rust
use cranberry;

fn main() {
    // Example using the signature Cranberry scheme
    let expected = "V ċas̈ax ȷuga żil bı citrus? Da, no falȷṡivıȷ ekzėmplȧr!";
    let source = "В чащах юга жил бы цитрус? Да, но фальшивый экземпляр!";
    
    let result = cranberry::Scheme::Cranberry.init().process(source);

    assert_eq!(expected, result);
}
```




## Engines

Cranberry currently supports the following transliteration engines, covering modern, international, and historical standards:



### Soviet Latinization & My Own (Cranberry)

| Engine | Scheme | Pangram Example |
|-|-|-|
| `cranberry::Scheme::Soviet1` | **Soviet #1** | V cascax juga ƶil by çitrus? Da, no falíşivyj ekzemplár! |
| `cranberry::Scheme::Soviet2` | **Soviet #2** | V cascax juga ƶil by çitrus? Da, no faljşivyj ekzemplär! |
| `cranberry::Scheme::Soviet3` | **Soviet #3** (Yanalif) | V cascax juga ƶil bь çitrus? Da, no faljşivьj ekzemplər! |
| `cranberry::Scheme::Cranberry` | **Cranberry** (Internal) | V ċas̈ax ȷuga żil bı citrus? Da, no falȷṡivıȷ ekzėmplȧr! |



### Modern & Official Standards (RU/International)

| Engine | Scheme | Pangram Example |
|-|-|-|
| `cranberry::Scheme::Passport2013` | **Passport 2013 (ICAO)** | V chashchakh iuga zhil by tsitrus? Da, no falshivyi ekzempliar! |
| `cranberry::Scheme::Passport2010` | **Passport 2010** | V chashchakh iuga zhil by tcitrus? Da, no falshivyi ekzempliar! |
| `cranberry::Scheme::Passport1997` | **Passport 1997** | V chashchakh yuga zhil by tsitrus? Da, no falshivyy ekzemplyar! |
| `cranberry::Scheme::Gost52535` | **GOST R 52535.1-2006** | V chashchakh iuga zhil by tcitrus? Da, no falshivyi ekzempliar! |
| `cranberry::Scheme::Gost52290` | **GOST R 52290-2004** | V chashchakh yuga zhil by tsitrus? Da, no falshivyy ekzemplyar! |
| `cranberry::Scheme::Gost779` | **GOST 7.79-2000** | V čaŝah ûga žil by citrus? Da, no fal'šivyj èkzemplǎr! |
| `cranberry::Scheme::Ungegn` | **UNGEGN (1987)** | V čaščah juga žil by citrus? Da, no fal'šivyj èkzempljar! |



### International ISO Standards

| Engine | Scheme | Pangram Example |
|-|-|-|
| `cranberry::Scheme::ISO1995` | **ISO 9:1995** | V čaŝah ûga žil by citrus? Da, no fal'šivyj èkzemplǎr! |
| `cranberry::Scheme::ISO1968Base` | **ISO 9:1968 Base** | V čaŝah ûga žil by citrus? Da, no fal'šivyj èkzemplǎr! |
| `cranberry::Scheme::ISO1968Alt1` | **ISO 9:1968 Alt #1** | V čaščach juga žil by citrus? Da, no fal'šivyj èkzempljar! |
| `cranberry::Scheme::ISO1968Alt2` | **ISO 9:1968 Alt #2** | V chashchakh yuga zhil by tsitrus? Da, no fal'shivyĭ èkzemplyar! |
| `cranberry::Scheme::ISO1954` | **ISO 9:1954** | V čaščah juga žil by citrus? Da, no fal'šivyj èkzempljar! |



### Scientific & Academic Systems

| Engine | Scheme | Pangram Example |
|-|-|-|
| `cranberry::Scheme::Scientific1951` | **Scientific 1951** | V čaščah juga žil by citrus? Da, no fal'šivyj èkzempljar! |
| `cranberry::Scheme::Scientific1939` | **Scientific 1939** | V čaščah juga žil by citrus? Da, no fal'šivyj èkzempljar! |
| `cranberry::Scheme::Scientific1905` | **Scientific 1905** | V čaščah juga žil by citrus? Da, no fal'šivyj èkzempljar! |
| `cranberry::Scheme::ALALC` | **ALA-LC** | V chashchakh i͡uga zhil by t͡sitrus? Da, no fal'shivyĭ ėkzempli͡ar! |
| `cranberry::Scheme::Ost8483` | **OST 8483** | V čaščah juga žil by citrus? Da, no fal'šivyj èkzempljar! |



### Historical & Anglo-American

| Engine | Scheme | Pangram Example |
|-|-|-|
| `cranberry::Scheme::BgnPcgn` | **BGN/PCGN** | V chashchakh yuga zhil by tsitrus? Da, no fal'shivyy ekzemplyar! |
| `cranberry::Scheme::Bs2979` | **BS 2979:1958** | V chashchakh yuga zhil by tsitrus? Da, no fal'shivyĭ ékzemplyar! |
| `cranberry::Scheme::Gost16876` | **GOST 16876-71** | V chashhah juga zhil by citrus? Da, no fal'shivyj ehkzempljar! |
| `cranberry::Scheme::StSev1362` | **ST SEV 1362** | V chashhah juga zhil by citrus? Da, no fal'shivyj ehkzempljar! |




## Roadmap

- **Features**
    * **Bidirectional Support**: Latin-to-Cyrillic conversion capabilities.
    * **Custom Schemas**: API to allow user-defined mapping configurations.
- **Tools**
    * **CLI Tool**: A standalone command-line interface for file processing.
    * **WebAssembly Playground**: An interactive web tool to test all schemes online.
    * **GTK+ GUI**: Desktop graphical interface for non-technical users.




## License

This project is licensed under the GPL-3.0 License. See the `LICENSE` file for details.