From 52d909797e7e961b802ea3ec01f3cd07ea976279 Mon Sep 17 00:00:00 2001 From: "Christiano, Kevin" Date: Thu, 18 Apr 2019 16:31:11 -0400 Subject: [PATCH] adding further checks for safety. --- .../Atoms/Views/LabelWithInternalButton.swift | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/MVMCoreUI/Atoms/Views/LabelWithInternalButton.swift b/MVMCoreUI/Atoms/Views/LabelWithInternalButton.swift index 60121c3a..08dd9044 100644 --- a/MVMCoreUI/Atoms/Views/LabelWithInternalButton.swift +++ b/MVMCoreUI/Atoms/Views/LabelWithInternalButton.swift @@ -10,7 +10,7 @@ import MVMCore public typealias ActionBlock = () -> Void -private typealias ActionableStringTuple = (front: String?, middle: String?, end: String?) +private typealias ActionableStringTuple = (front: String?, action: String?, end: String?) public typealias ActionObjectDelegate = (NSObjectProtocol & MVMCoreActionDelegateProtocol) public typealias ButtonObjectDelegate = (NSObjectProtocol & ButtonDelegateProtocol) public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProtocol & MVMCoreLoadDelegateProtocol & MVMCorePresentationDelegateProtocol & NSObjectProtocol @@ -383,22 +383,29 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt let actionableTuple: ActionableStringTuple = rangeOfText(text, startTag: startTag, endTag: endTag) - if let front = actionableTuple.front, let middle = actionableTuple.middle, let end = actionableTuple.end { + if let text = text, + let leftTag = startTag, + text.contains(leftTag), + let rightTag = endTag, + text.contains(rightTag), + let front = actionableTuple.front, + let middle = actionableTuple.action, + let end = actionableTuple.end { + frontText = front.trimmingCharacters(in: .whitespaces) actionText = middle.trimmingCharacters(in: .whitespaces) backText = end.trimmingCharacters(in: .whitespaces) - self.text = getTextFromStringComponents() } else { frontText = text - self.text = text } + self.text = getTextFromStringComponents() setup() } private func rangeOfText(_ text: String?, startTag: String?, endTag: String?) -> ActionableStringTuple { - var actionableTuple: ActionableStringTuple = (front: nil, middle: nil, end: nil) + var actionableTuple: ActionableStringTuple = (front: nil, action: nil, end: nil) guard let text = text else { return actionableTuple } @@ -409,7 +416,7 @@ public typealias CoreObjectActionLoadPresentDelegate = MVMCoreActionDelegateProt if let rightTag = endTag, text.contains(rightTag) { let secondHalf = firstHalf[1].components(separatedBy: rightTag) - actionableTuple.middle = secondHalf[0] + actionableTuple.action = secondHalf[0] actionableTuple.end = secondHalf[1] } }