|
@@ -1353,7 +1353,7 @@ extension BaseNightscoutManager {
|
|
|
// TODO: Consolidate all mmol parsing methods (in TagCloudView, NightscoutManager and HomeRootView) to one central func
|
|
// TODO: Consolidate all mmol parsing methods (in TagCloudView, NightscoutManager and HomeRootView) to one central func
|
|
|
func parseReasonGlucoseValuesToMmolL(_ reason: String) -> String {
|
|
func parseReasonGlucoseValuesToMmolL(_ reason: String) -> String {
|
|
|
let patterns = [
|
|
let patterns = [
|
|
|
- "ISF:\\s*-?\\d+\\.?\\d*→-?\\d+\\.?\\d*", // ISF with arrow
|
|
|
|
|
|
|
+ "(?:ISF|Target):\\s*-?\\d+\\.?\\d*→-?\\d+\\.?\\d*", // ISF or Target with arrow
|
|
|
"Dev:\\s*-?\\d+\\.?\\d*", // Dev pattern
|
|
"Dev:\\s*-?\\d+\\.?\\d*", // Dev pattern
|
|
|
"BGI:\\s*-?\\d+\\.?\\d*", // BGI pattern
|
|
"BGI:\\s*-?\\d+\\.?\\d*", // BGI pattern
|
|
|
"Target:\\s*-?\\d+\\.?\\d*", // Target pattern
|
|
"Target:\\s*-?\\d+\\.?\\d*", // Target pattern
|
|
@@ -1382,13 +1382,16 @@ extension BaseNightscoutManager {
|
|
|
let glucoseValueString = String(reason[range])
|
|
let glucoseValueString = String(reason[range])
|
|
|
|
|
|
|
|
if glucoseValueString.contains("→") {
|
|
if glucoseValueString.contains("→") {
|
|
|
- // Handle ISF: X→Y
|
|
|
|
|
|
|
+ // Handle ISF: X→Y or Target: X→Y
|
|
|
let values = glucoseValueString.components(separatedBy: "→")
|
|
let values = glucoseValueString.components(separatedBy: "→")
|
|
|
- let firstNumber = values[0].components(separatedBy: ":")[1].trimmingCharacters(in: .whitespaces)
|
|
|
|
|
|
|
+ let prefixAndFirstNumber = values[0].components(separatedBy: ":")
|
|
|
|
|
+ guard prefixAndFirstNumber.count == 2 else { continue }
|
|
|
|
|
+ let prefix = prefixAndFirstNumber[0].trimmingCharacters(in: .whitespaces)
|
|
|
|
|
+ let firstNumber = prefixAndFirstNumber[1].trimmingCharacters(in: .whitespaces)
|
|
|
let secondNumber = values[1].trimmingCharacters(in: .whitespaces)
|
|
let secondNumber = values[1].trimmingCharacters(in: .whitespaces)
|
|
|
let firstValue = convertToMmolL(firstNumber)
|
|
let firstValue = convertToMmolL(firstNumber)
|
|
|
let secondValue = convertToMmolL(secondNumber)
|
|
let secondValue = convertToMmolL(secondNumber)
|
|
|
- let formattedString = "ISF: \(firstValue)→\(secondValue)"
|
|
|
|
|
|
|
+ let formattedString = "\(prefix): \(firstValue)→\(secondValue)"
|
|
|
updatedReason.replaceSubrange(range, with: formattedString)
|
|
updatedReason.replaceSubrange(range, with: formattedString)
|
|
|
|
|
|
|
|
} else if glucoseValueString.contains("Eventual BG"), glucoseValueString.contains("<") {
|
|
} else if glucoseValueString.contains("Eventual BG"), glucoseValueString.contains("<") {
|