Skip to content

evenfurther/french-numbers-ex

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FrenchNumbers

FrenchNumbers is an Elixir library that transforms numbers into their French representation.

This library replicates the functionality of the Rust french-numbers crate.

Installation

Add french_numbers to your list of dependencies in mix.exs:

def deps do
  [
    {:french_numbers, "~> 0.1.0"}
  ]
end

Usage

Use the FrenchNumbers.to_french/2 function to convert any integer to its French representation:

iex> FrenchNumbers.to_french(71)
"soixante-et-onze"

iex> FrenchNumbers.to_french(1001)
"mille-un"

iex> FrenchNumbers.to_french(-200001)
"moins deux-cent-mille-un"

iex> FrenchNumbers.to_french(-200000001)
"moins deux-cents-millions-un"

iex> FrenchNumbers.to_french(-204000001)
"moins deux-cent-quatre-millions-un"

Options

You can customize the output using keyword options:

Feminine Form

Use the :feminine option (default: false) to get the feminine declination. This only affects numbers ending in 1:

iex> FrenchNumbers.to_french(37251061, feminine: false)
"trente-sept-millions-deux-cent-cinquante-et-un-mille-soixante-et-un"

iex> FrenchNumbers.to_french(37251061, feminine: true)
"trente-sept-millions-deux-cent-cinquante-et-un-mille-soixante-et-une"

Orthographic Reform

Use the :reformed option (default: true) to control the hyphenation style:

  • true (default): Post-1990 reform - all words are separated by hyphens
  • false: Pre-1990 - only numbers smaller than 100 are separated by hyphens, others by spaces
iex> FrenchNumbers.to_french(37251061, reformed: true)
"trente-sept-millions-deux-cent-cinquante-et-un-mille-soixante-et-un"

iex> FrenchNumbers.to_french(37251061, reformed: false)
"trente-sept millions deux cent cinquante et un mille soixante et un"

You can combine both options:

iex> FrenchNumbers.to_french(37251061, feminine: true, reformed: false)
"trente-sept millions deux cent cinquante et un mille soixante et une"

Testing

The library includes comprehensive tests ported from the Rust crate, including:

  • 10,000 test cases for reformed format
  • 10,000 test cases for pre-reform format
  • Tests from various French language resources

Run tests with:

mix test

License

This project follows the same license as the original Rust crate.

About

FrenchNumbers Elixir library

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages