adding further checks for safety.

This commit is contained in:
Christiano, Kevin 2019-04-18 16:31:11 -04:00
parent c0d4e553d0
commit 52d909797e

View File

@ -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]
}
}