1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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
mod no_seperator;
mod seperator;
mod test;
pub use no_seperator::to_text_no_seperator;
pub use seperator::to_text_with_seperator;
pub fn digit_to_text(digit: u8) -> Option<String> {
match digit {
0 => Some("".to_string()),
1 => Some("one".to_string()),
2 => Some("two".to_string()),
3 => Some("three".to_string()),
4 => Some("four".to_string()),
5 => Some("five".to_string()),
6 => Some("six".to_string()),
7 => Some("seven".to_string()),
8 => Some("eight".to_string()),
9 => Some("nine".to_string()),
_ => None,
}
}
fn place_value(number: u8, place: u8, seperator: Option<&str>) -> Option<String> {
let mut buffer = digit_to_text(number).unwrap();
if let Some(sep) = seperator {
if number != 0 {
buffer.push_str(sep)
}
}
match place {
1 => (),
2 => (),
3 => buffer.push_str("hundred"),
4 => buffer.push_str("thousand"),
5 => (),
6 => buffer.push_str("million"),
_ => (),
};
Some(buffer)
}
#[macro_export]
macro_rules! to_text {
($number:expr) => {
ntext::to_text_no_seperator($number);
};
($number:expr, $seperator:expr) => {
ntext::to_text_with_seperator($number, $seperator);
};
}