#nlp #grammar #english #text

in_definite

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

18 releases (1 stable)

1.0.0 Sep 4, 2023
0.2.5 Mar 12, 2022
0.2.4 Nov 14, 2020
0.2.3 Mar 18, 2020
0.1.10 Sep 21, 2019

#243 in Text processing

Download history 26/week @ 2024-01-08 1/week @ 2024-01-15 20/week @ 2024-01-22 38/week @ 2024-01-29 24/week @ 2024-02-05 59/week @ 2024-02-12 31/week @ 2024-02-19 27/week @ 2024-02-26 17/week @ 2024-03-04 23/week @ 2024-03-11 15/week @ 2024-03-18 25/week @ 2024-03-25 271/week @ 2024-04-01

336 downloads per month
Used in 2 crates

MIT license

27KB
596 lines

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);

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!

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

No runtime deps