8000 GitHub - artichoke/roe at v0.0.1
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
/ roe Public

🍣 Unicode case converters

License

MIT, Unknown licenses found

Licenses found

MIT
LICENSE
Unknown
LICENSE-UNICODE
Notifications You must be signed in to change notification settings

artichoke/roe

Repository files navigation

roe

GitHub Actions Discord Twitter
Crate API API trunk

Implements Unicode case mapping for conventionally UTF-8 binary strings.

Case mapping or case conversion is a process whereby strings are converted to a particular form—uppercase, lowercase, or titlecase—possibly for display to the user.

roe can convert conventionally UTF-8 binary strings to capitalized, lowercase, and uppercase forms. This crate is used to implement String#capitalize, Symbol#capitalize, String#downcase, Symbol#downcase, String#upcase, and Symbol#upcase in Artichoke Ruby.

This crate depends on bstr.

Status

This crate is currently a work in progress. When the API is complete, Roe will support lowercase, uppercase, titlecase, and case folding iterators for conventionally UTF-8 byte slices.

Roe will implement support for full, Turkic, ASCII, and case folding transforms.

Usage

Add this to your Cargo.toml:

[dependencies]
roe = "0.0.1"

Then convert case like:

use roe::{LowercaseMode, UppercaseMode};

assert_eq!(roe::lowercase(b"Artichoke Ruby", LowercaseMode::Ascii).collect::<Vec<_>>(), b"artichoke ruby");
assert_eq!(roe::uppercase("Αύριο".as_bytes(), UppercaseMode::Full).collect::<Vec<_>>(), "ΑΎΡΙΟ".as_bytes());

Crate Features

roe is no_std compatible with an optional dependency on the alloc crate.

roe has several Cargo features, all of which are enabled by default:

  • std - Adds a dependency on std, the Rust Standard Library. This feature enables std::error::Error implementations on error types in this crate. Enabling the std feature also enables the alloc feature.
  • alloc - Adds a dependency on alloc, the Rust allocation and collections library. This feature enables APIs that allocate String or Vec.

License

roe is licensed under the MIT License (c) Ryan Lopopolo.

0