il_tz 0.1.3

A Rust library for working with Israeli ID numbers (TZ)
Documentation
# IL_TZ

[![Rust](https://github.com/ofersadan85/il_tz/actions/workflows/rust.yml/badge.svg)](https://github.com/ofersadan85/il_tz/actions/workflows/rust.yml)
[![Publish](https://github.com/ofersadan85/il_tz/actions/workflows/publish.yml/badge.svg)](https://github.com/ofersadan85/il_tz/actions/workflows/publish.yml)
[![Crates.io](https://img.shields.io/crates/v/il_tz.svg)](https://crates.io/crates/il_tz)
[![Docs.rs](https://docs.rs/il_tz/badge.svg)](https://docs.rs/il_tz)
[![License](https://img.shields.io/crates/l/il_tz.svg)](LICENSE.md)

A Rust library for working with Israeli ID numbers (TZ is the [Hebrew](https://en.wikipedia.org/wiki/Israeli_identity_card) acronym for "ID").

## Install (CLI)

Download the binary for your system from the [latest release](https://github.com/ofersadan85/il_tz/releases/latest)

You can also install it using `cargo install`:

```bash
cargo install il_tz --features cli
```

## Usage (CLI)

```text
> iltz --help
Validate Israeli ID numbers (TZ)

Usage: iltz.exe [TZ]... [COMMAND]

Commands:
  generate  Generates a list of valid TZ values
  help      Print this message or the help of the given subcommand(s)

Arguments:
  [TZ]...  A list of ID numbers (TZ) to validate

Options:
  -h, --help  Print help
```

### CLI Examples

```text
> iltz 999999998 999999999
999999998 true
999999999 false

> iltz generate 50 100
000000059
000000067
000000075
000000083
000000091
000000109
```

## As a dependency

To use it in your own Rust projects, run this command:

```bash
cargo add il_tz
```

Alternatively, add this to your Cargo.toml:

```toml
[dependencies]
il_tz = "0.1.3"
```

> **Warning**
> Verify the latest version number on [crates.io]https://crates.io/crates/il_tz.

## Rust Example

This example shows how to convert an integer to a `TZ`, how to convert a string to a `TZ`, and validating them.

```rust
use il_tz::{int2tz, str2tz, tz2str, validate};

fn main() {
    // A valid TZ example
    let valid = int2tz(999_999_998).unwrap();
    println!("{} {}", tz2str(&valid), validate(&valid));

    // An invalid TZ example
    let invalid = int2tz(999_999_999).unwrap();
    println!("{} {}", tz2str(&invalid), validate(&invalid));

    // Leading zeros can be used or omitted
    let tz1 = str2tz("000000141").unwrap();
    let tz2 = str2tz("00141").unwrap();
    let tz3 = int2tz(141).unwrap();
    assert_eq!(tz1, tz2);
    assert_eq!(tz1, tz3);
}
```

> **Note**
> This library does not validate the ID number (TZ) against any sort of population database, it only validates it mathematically.

## License / Warranty

This library is licensed under the MIT license (which means it's free to use, reuse, repackage etc.) See the LICENSE file for more information. This library is provided as-is, without any warranty. Use at your own risk.