Fixed to_text not returning single digits
This commit is contained in:
+23
-19
@@ -79,26 +79,30 @@ pub fn to_text(number: u32) -> String {
|
|||||||
.collect();
|
.collect();
|
||||||
let second_digit_array: [usize; 2] = [0, 3];
|
let second_digit_array: [usize; 2] = [0, 3];
|
||||||
let mut last: Option<u8> = None;
|
let mut last: Option<u8> = None;
|
||||||
for (index, digit) in digits.iter().rev().enumerate() {
|
if digits.len() == 1 {
|
||||||
if second_digit_array.contains(&index) {
|
numtext.push_str(digit_to_text(*digits.last().unwrap()).unwrap().as_str());
|
||||||
last = Some(digit.clone());
|
} else {
|
||||||
continue;
|
for (index, digit) in digits.iter().rev().enumerate() {
|
||||||
}
|
if second_digit_array.contains(&index) {
|
||||||
if let Some(last_digit) = last {
|
last = Some(digit.clone());
|
||||||
let mut buffer = String::new();
|
continue;
|
||||||
buffer.push_str(tens_place(digit.clone(), last_digit).unwrap().as_str());
|
}
|
||||||
if index > 2 {
|
if let Some(last_digit) = last {
|
||||||
buffer.push_str(place_value(0, index as u8).unwrap().as_str());
|
let mut buffer = String::new();
|
||||||
|
buffer.push_str(tens_place(digit.clone(), last_digit).unwrap().as_str());
|
||||||
|
if index > 2 {
|
||||||
|
buffer.push_str(place_value(0, index as u8).unwrap().as_str());
|
||||||
|
}
|
||||||
|
numtext.insert_str(0, buffer.as_str());
|
||||||
|
last = None;
|
||||||
|
} else {
|
||||||
|
numtext.insert_str(
|
||||||
|
0,
|
||||||
|
place_value(digit.clone(), index as u8 + 1)
|
||||||
|
.unwrap()
|
||||||
|
.as_str(),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
numtext.insert_str(0, buffer.as_str());
|
|
||||||
last = None;
|
|
||||||
} else {
|
|
||||||
numtext.insert_str(
|
|
||||||
0,
|
|
||||||
place_value(digit.clone(), index as u8 + 1)
|
|
||||||
.unwrap()
|
|
||||||
.as_str(),
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
numtext
|
numtext
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ mod tests {
|
|||||||
fn digits() {
|
fn digits() {
|
||||||
use crate::digit_to_text;
|
use crate::digit_to_text;
|
||||||
assert_eq!(digit_to_text(9).unwrap(), "nine");
|
assert_eq!(digit_to_text(9).unwrap(), "nine");
|
||||||
|
assert_eq!(digit_to_text(3).unwrap(), "three");
|
||||||
|
assert_eq!(digit_to_text(7).unwrap(), "seven");
|
||||||
|
assert_eq!(digit_to_text(5).unwrap(), "five");
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn numbers() {
|
fn numbers() {
|
||||||
@@ -11,6 +14,7 @@ mod tests {
|
|||||||
assert_eq!(to_text(12345), "twelvethousandthreehundredfortyfive");
|
assert_eq!(to_text(12345), "twelvethousandthreehundredfortyfive");
|
||||||
assert_eq!(to_text(81123), "eightyonethousandonehundredtwentythree");
|
assert_eq!(to_text(81123), "eightyonethousandonehundredtwentythree");
|
||||||
assert_eq!(to_text(12), "twelve");
|
assert_eq!(to_text(12), "twelve");
|
||||||
|
assert_eq!(to_text(2), "two");
|
||||||
}
|
}
|
||||||
#[test]
|
#[test]
|
||||||
fn tens() {
|
fn tens() {
|
||||||
|
|||||||
Reference in New Issue
Block a user