fix(calc): Extract value from last occurrence of assignment operator

This commit is contained in:
Michael Aaron Murphy 2021-10-20 23:17:09 +02:00
parent b8192e1df1
commit be7438fe64

View file

@ -233,9 +233,9 @@ pub async fn uses_decimal_comma() -> bool {
/// Extracts the value from an outcome expression. /// Extracts the value from an outcome expression.
fn extract_value(expression: &str) -> &str { fn extract_value(expression: &str) -> &str {
expression expression
.find('=') .rfind('=')
.map(|p| p + 1) .map(|p| p + 1)
.or_else(|| expression.find('≈').map(|p| p + 3)) .or_else(|| expression.rfind('≈').map(|p| p + 3))
.map(|pos| expression[pos..].trim()) .map(|pos| expression[pos..].trim())
.unwrap_or(&expression) .unwrap_or(&expression)
} }
@ -245,6 +245,11 @@ mod tests {
#[test] #[test]
fn extract_value() { fn extract_value() {
assert_eq!("7.5", super::extract_value("7 + 1/2 = 7.5")); assert_eq!("7.5", super::extract_value("7 + 1/2 = 7.5"));
assert_eq!("7.5", super::extract_value("15/2 = 7 + 1/2 = 7.5"));
assert_eq!("1.333333333", super::extract_value("1 + 1/3 ≈ 1.333333333")); assert_eq!("1.333333333", super::extract_value("1 + 1/3 ≈ 1.333333333"));
assert_eq!(
"1.333333333",
super::extract_value("4/3 ≈ 1 + 1/3 ≈ 1.333333333")
);
} }
} }