fix(calc): Extract value from last occurrence of assignment operator
This commit is contained in:
parent
b8192e1df1
commit
be7438fe64
1 changed files with 7 additions and 2 deletions
|
|
@ -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")
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue