diff --git a/src/util/parse.rs b/src/util/parse.rs index f1ef77aa6..aa161df6a 100644 --- a/src/util/parse.rs +++ b/src/util/parse.rs @@ -102,165 +102,6 @@ pub fn symbol_to_id(token: &str, tokenlist: TokenList) -> Result { } } -pub fn decode_base10(amount: &str, decimals: usize) -> Result { - const RADIX: u32 = 10; - - let mut input_str = amount.to_string(); - - // remove the decimal point - let mut amount: String = match input_str.find(".") { - Some(v) => { - input_str.remove(v); - input_str - } - None => input_str, - }; - - // only digits should remain: - for c in amount.chars() { - if c.is_digit(RADIX) == false { - // TODO: Make this an error - println!("Amount is not valid digits!") - } - } - - // add digits to the end if there are too few - if amount.len() < decimals { - loop { - amount.push('0'); - - if amount.len() == decimals { - break; - } - continue; - } - } - - // remove digits from the end if there are too many - if amount.len() > decimals { - loop { - amount.pop(); - - if amount.len() == decimals { - break; - } - continue; - } - } - - println!("Resized amount: {}", amount); - - // convert to an integer - let number = amount.parse::().unwrap(); - - Ok(number) -} - -// TODO: implement this - -//fn encode_base10() { -// let input = 100000000; -// println!("Original input: {}", input); -// let mut input_str = input.to_string(); -// -// input_str.insert(1, '.'); -// -// let amount = input_str.trim_end_matches('0'); -// -// let amount = if amount.ends_with('.') == true { -// let amount = amount.trim_end_matches('.'); -// amount -// } else { -// amount -// }; -// -// println!("Encoded output: {}", amount); -//} - -mod tests { - #[test] - fn decode_base10() { - const RADIX: u32 = 10; - // TODO: this number varies per token - let decimal_places = 10; - - let input = "2.5"; - println!("Initial input: {}", input); - - let mut input_str = input.to_string(); - - // remove the decimal point - let mut amount: String = match input_str.find(".") { - Some(v) => { - input_str.remove(v); - input_str - } - None => { - print!("Number isn't a float"); - input_str - } - }; - - println!("Removed decimal point: {}", amount); - - // only digits should remain: - for c in amount.chars() { - if c.is_digit(RADIX) == false { - println!("Amount is not valid digits!") - } - } - - // add digits to the end if there are too few - if amount.len() < decimal_places { - loop { - amount.push('0'); - - if amount.len() == decimal_places { - break; - } - continue; - } - } - - // remove digits from the end if there are too many - if amount.len() > decimal_places { - loop { - amount.pop(); - - if amount.len() == decimal_places { - break; - } - continue; - } - } - - println!("Resized amount: {}", amount); - - // convert to an integer - let number = amount.parse::().unwrap(); - - println!("The final number: {:?}", number); - } - - #[test] - fn encode_base10() { - let input = 100000000; - println!("Original input: {}", input); - let mut input_str = input.to_string(); - - input_str.insert(1, '.'); - - let amount = input_str.trim_end_matches('0'); - - let amount = if amount.ends_with('.') == true { - let amount = amount.trim_end_matches('.'); - amount - } else { - amount - }; - - println!("Encoded output: {}", amount); -======= fn is_digit(c: char) -> bool { ('0'..='9').contains(&c) } @@ -354,6 +195,5 @@ mod tests { assert_eq!("234321.1", &encode_base10(2343211, 1)); assert_eq!("2343211", &encode_base10(2343211, 0)); assert_eq!("0.00002343", &encode_base10(2343, 8)); ->>>>>>> util-refactor } }