# curieosa
A crate for parsing Internationalized Resource Identifiers (IRIs)
into Compact Uniform Resource Identifiers (CURIEs).
Add the following into your `Cargo.toml` file to use `curieosa` in your code:
```toml
curieosa = "0.1.0"
```
**CREDIT**
The `curieosa` is heavily inspired by the [curie-util](https://github.com/prefixcommons/curie-util) library
written by Chris Mungall in Java.
The Rust port is intentionally very similar to the Java library, to simplify its usage.
## Examples
Get an implementation of [`CurieUtil`] backed by a trie with default prefix -> expansion mappings.
```rust
use curieosa::{TrieCurieUtil, CurieUtil, CurieParts};
let cu = TrieCurieUtil::default();
// Get curie parts from an IRI
let iri = "http://purl.obolibrary.org/obo/HP_0001250";
let cp: CurieParts<'_, '_> = cu.get_curie_data(iri).unwrap();
assert_eq!(cp.get_prefix(), "HP");
assert_eq!(cp.get_id(), "0001250");
```
## Run tests
Run all tests by running:
```shell
cargo test
```
## Run benches
We use `criterion` to benchmark IRI parsing.
Run the following to run the bench suite:
```shell
cargo bench
```