Function written_numbers::to_words

source ·
pub fn to_words(
    number: &str,
    options: &ToWordsOptions,
    language_options: &LanguageOptions,
    languages: &mut LanguagesMap
) -> Result<String, ToWordsError>
Examples found in repository?
examples/cli.rs (lines 56-67)
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
fn main() {
	let args = Args::parse();

	let mut number = args.number;

	if number == "random" {
		number = format!("{}", rand::thread_rng().gen_range(1..999));
		let mut zero_count = rand::thread_rng().gen_range(2..999997);
		while zero_count > 0 {
			number += "000";
			zero_count -= 1;
		}
	}

	let result = to_words(
		&number,
		&ToWordsOptions {
			language: args.language.to_string(),
		},
		&hashmap! {
			"hundred_and".to_string() => (if args.hundred_and {"true"} else {"false"}).to_string(),
			"commas".to_string() => (if args.commas {"true"} else {"false"}).to_string(),
			"ordinal".to_string() => (if args.ordinal {"true"} else {"false"}).to_string(),
		},
		&mut hashmap! {},
	);

	match result {
		Ok(result) => {
			if args.match_case.is_uppercase() {
				println!("{}", str_cap(&result));
			} else {
				println!("{result}");
			}
		}
		Err(err) => match err {
			ToWordsError::NotANumber => {
				println!("\"{}\" is not a valid number.", number);
			}
			ToWordsError::UnimplementedLanguage => {
				println!(
					"The language \"{}\" hasn't been implemented yet.",
					args.language
				);
			}
		},
	}

	if args.memory {
		let peak_mem = PEAK_ALLOC.peak_usage_as_mb();
		println!("Peak memory: {} MB", peak_mem);
	}
}