in_definite

Crates.ioin_definite
lib.rsin_definite
version1.1.2
created_at2019-09-18 20:35:13.057981+00
updated_at2025-09-06 10:10:29.948234+00
descriptionGet the indefinite article ('a' or 'an') to match the given word. For example: an umbrella, a user.
homepage
repositoryhttps://github.com/mrseanryan/in_definite
max_upload_size
id165813
size27,906
Sean Ryan (mrseanryan)

documentation

README

in_definite

Rust port of indefinite on npm, for deciding which indefinite article to use ('a' or 'an').

Get the indefinite article ('a' or 'an') to match the given word. For example: an umbrella, a user.

Rust

Examples

use in_definite;

let result = in_definite::get_a_or_an("alien");
assert_eq!("an", result);
// Irregular word
let result = in_definite::get_a_or_an("unicorn");
assert_eq!("a", result);
// Title Case
let result = in_definite::get_a_or_an("Ugly");
assert_eq!("An", result);
let result = in_definite::is_an("alien");
assert_eq!(in_definite::Is::An, result);
let result = in_definite::is_an("unicorn");
assert_eq!(in_definite::Is::A, result);

note: detecting plurals is not supported.

Deviations from the original indefinite

Upper/lower/mixed case handling:

  • a word like THIS will be always considered to be an acronym.
  • normally the result is lower case ('a' or 'an')
  • title case is handled as: 'Ugly' -> 'An'
  • mixed case is handled as: 'uGly' -> 'an'

Adverbs:

  • Handles adverbs with '-ly' in a generic manner. Example: "a ubiquitously"

A big thanks to the original authors of indefinite!

Usage

  • in_definite is a rust library, but the git repository also includes a basic command line tool.

See in_definite_cmd_published for the command line tool which consumes the library.

./go-published.sh umbrella

Output

= in_definite =
===============
an umbrella

Published @ crates.io

https://crates.io/crates/in_definite

licence = MIT

This project is licensed under the MIT License - see the LICENSE file for details

Commit count: 169

cargo fmt