{"id":18560928,"url":"https://github.com/artichoke/roe","last_synced_at":"2025-04-10T02:31:16.850Z","repository":{"id":38991177,"uuid":"330407519","full_name":"artichoke/roe","owner":"artichoke","description":"🍣 Unicode case converters","archived":false,"fork":false,"pushed_at":"2025-04-01T00:30:28.000Z","size":3384,"stargazers_count":9,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"trunk","last_synced_at":"2025-04-01T01:29:31.225Z","etag":null,"topics":["artichoke","case","case-mapping","lowercase","no-std","rust","rust-crate","titlecase","unicode","unicode-case-mapping","uppercase","utf-8"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/roe","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/artichoke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-17T14:18:39.000Z","updated_at":"2025-03-03T23:25:40.000Z","dependencies_parsed_at":"2024-08-14T03:54:53.794Z","dependency_job_id":"8a20eab5-d5f2-4164-8f65-61ebeeed6354","html_url":"https://github.com/artichoke/roe","commit_stats":{"total_commits":133,"total_committers":4,"mean_commits":33.25,"dds":0.5112781954887218,"last_synced_commit":"a8fd949c285764dc09d72dd0f32fa9292ab75df9"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artichoke%2Froe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artichoke%2Froe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artichoke%2Froe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/artichoke%2Froe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/artichoke","download_url":"https://codeload.github.com/artichoke/roe/tar.gz/refs/heads/trunk","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248144197,"owners_count":21054882,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["artichoke","case","case-mapping","lowercase","no-std","rust","rust-crate","titlecase","unicode","unicode-case-mapping","uppercase","utf-8"],"created_at":"2024-11-06T22:05:10.367Z","updated_at":"2025-04-10T02:31:16.835Z","avatar_url":"https://github.com/artichoke.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# roe\n\n[![GitHub Actions](https://github.com/artichoke/roe/workflows/CI/badge.svg)](https://github.com/artichoke/roe/actions)\n[![Code Coverage](https://codecov.artichokeruby.org/roe/badges/flat.svg?nocache=2)](https://codecov.artichokeruby.org/roe/index.html)\n[![Discord](https://img.shields.io/discord/607683947496734760)](https://discord.gg/QCe2tp2)\n[![Twitter](https://img.shields.io/twitter/follow/artichokeruby?label=Follow\u0026style=social)](https://twitter.com/artichokeruby)\n\u003cbr\u003e\n[![Crate](https://img.shields.io/crates/v/roe.svg)](https://crates.io/crates/roe)\n[![API](https://docs.rs/roe/badge.svg)](https://docs.rs/roe)\n[![API trunk](https://img.shields.io/badge/docs-trunk-blue.svg)](https://artichoke.github.io/roe/roe/)\n\nImplements [Unicode case mapping] for [conventionally UTF-8 binary strings].\n\n[unicode case mapping]: https://unicode.org/faq/casemap_charprop.html#casemap\n[conventionally utf-8 binary strings]:\n  https://docs.rs/bstr/1.*/bstr/#when-should-i-use-byte-strings\n\n\u003e Case mapping or case conversion is a process whereby strings are converted to\n\u003e a particular form—uppercase, lowercase, or titlecase—possibly for display to\n\u003e the user.\n\n`roe` can convert conventionally UTF-8 binary strings to capitalized, lowercase,\nand uppercase forms. This crate is used to implement [`String#capitalize`],\n[`Symbol#capitalize`], [`String#downcase`], [`Symbol#downcase`],\n[`String#upcase`], and [`Symbol#upcase`] in [Artichoke Ruby].\n\n[`string#capitalize`]:\n  https://ruby-doc.org/core-3.1.2/String.html#method-i-capitalize\n[`symbol#capitalize`]:\n  https://ruby-doc.org/core-3.1.2/Symbol.html#method-i-capitalize\n[`string#downcase`]:\n  https://ruby-doc.org/core-3.1.2/String.html#method-i-downcase\n[`symbol#downcase`]:\n  https://ruby-doc.org/core-3.1.2/Symbol.html#method-i-downcase\n[`string#upcase`]: https://ruby-doc.org/core-3.1.2/String.html#method-i-upcase\n[`symbol#upcase`]: https://ruby-doc.org/core-3.1.2/Symbol.html#method-i-upcase\n[artichoke ruby]: https://github.com/artichoke/artichoke\n\nThis crate depends on [`bstr`].\n\n[`bstr`]: https://crates.io/crates/bstr\n\n## Implementation\n\nRoe generates conversion tables from Unicode Data Files. Roe implements case\nmapping as defined in the [Unicode standard][casemap] (see [`PropList.txt`],\n[`SpecialCasing.txt`], [`UnicodeData.txt`]).\n\n[casemap]: https://unicode.org/faq/casemap_charprop.html#casemap\n[`proplist.txt`]: generated/ucd/PropList.txt\n[`specialcasing.txt`]: generated/ucd/SpecialCasing.txt\n[`unicodedata.txt`]: generated/ucd/UnicodeData.txt\n\n## Status\n\nThis crate is currently a _work in progress_. When the API is complete, Roe will\nsupport lowercase, uppercase, titlecase, and case folding iterators for\nconventionally UTF-8 byte slices.\n\nRoe will implement support for full, Turkic, ASCII, and case folding transforms.\n\n## Usage\n\nAdd this to your `Cargo.toml`:\n\n```toml\n[dependencies]\nroe = \"0.0.7\"\n```\n\nThen convert case like:\n\n```rust\nuse roe::{LowercaseMode, UppercaseMode, TitlecaseMode};\n\nassert_eq!(\n    roe::lowercase(b\"Artichoke Ruby\", LowercaseMode::Ascii).collect::\u003cVec\u003c_\u003e\u003e(),\n    b\"artichoke ruby\"\n);\nassert_eq!(\n    roe::uppercase(\"Αύριο\".as_bytes(), UppercaseMode::Full).collect::\u003cVec\u003c_\u003e\u003e(),\n    \"ΑΎΡΙΟ\".as_bytes()\n);\nassert_eq!(\n    roe::titlecase(\"ﬃ\".as_bytes(), TitlecaseMode::Full).collect::\u003cVec\u003c_\u003e\u003e(),\n    \"Ffi\".as_bytes()\n);\n```\n\n## Crate Features\n\n`roe` is `no_std` compatible with an optional dependency on the [`alloc`] crate.\n\n`roe` has several Cargo features, all of which are enabled by default:\n\n- **std** - Adds a dependency on [`std`], the Rust Standard Library. This\n  feature enables [`std::error::Error`] implementations on error types in this\n  crate. Enabling the **std** feature also enables the **alloc** feature.\n- **alloc** - Adds a dependency on [`alloc`], the Rust allocation and\n  collections library. This feature enables APIs that allocate [`String`] or\n  [`Vec`].\n\n[`alloc`]: https://doc.rust-lang.org/alloc/index.html\n[`std`]: https://doc.rust-lang.org/std/index.html\n[`std::error::error`]: https://doc.rust-lang.org/std/error/trait.Error.html\n[`string`]: https://doc.rust-lang.org/stable/alloc/string/struct.String.html\n[`vec`]: https://doc.rust-lang.org/stable/alloc/vec/struct.Vec.html\n\n## Unicode Version\n\nRoe implements Unicode case mapping with the Unicode 16.0.0 case mapping\nruleset.\n\nEach new release of Unicode may bring updates to the Data Files which are the\nsource for the case mappings in this crate. Updates to the case mapping rules\nwill be accompanied with a minor version bump.\n\n## License\n\n`roe` is licensed under the [MIT License](LICENSE) (c) Ryan Lopopolo.\n\n`roe` includes Unicode Data Files which are subject to the [Unicode Terms of\nUse] and [Unicode License v3](LICENSE-UNICODE) (c) 1991-2024 Unicode, Inc.\n\n[unicode terms of use]: https://www.unicode.org/copyright.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartichoke%2Froe","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fartichoke%2Froe","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fartichoke%2Froe/lists"}