|
@@ -72,7 +72,7 @@ struct Utils {
|
|
return acc
|
|
return acc
|
|
}
|
|
}
|
|
|
|
|
|
- static func isValid(_ email: String) -> Bool {
|
|
|
|
|
|
+ static func isValid(email: String) -> Bool {
|
|
let emailRegEx = "(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}"
|
|
let emailRegEx = "(?:[a-z0-9!#$%\\&'*+/=?\\^_`{|}~-]+(?:\\.[a-z0-9!#$%\\&'*+/=?\\^_`{|}"
|
|
+ "~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\"
|
|
+ "~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\"
|
|
+ "x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-"
|
|
+ "x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-"
|
|
@@ -85,6 +85,15 @@ struct Utils {
|
|
return emailTest.evaluate(with: email)
|
|
return emailTest.evaluate(with: email)
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ static func isEmail(url: URL) -> Bool {
|
|
|
|
+ let mailScheme = "mailto"
|
|
|
|
+ if let scheme = url.scheme {
|
|
|
|
+ return mailScheme == scheme && isValid(email: url.absoluteString.substring(mailScheme.count + 1, url.absoluteString.count))
|
|
|
|
+ }
|
|
|
|
+ return false
|
|
|
|
+ }
|
|
|
|
+
|
|
static func formatAddressForQuery(address: [String: String]) -> String {
|
|
static func formatAddressForQuery(address: [String: String]) -> String {
|
|
// Open address in Apple Maps app.
|
|
// Open address in Apple Maps app.
|
|
var addressParts = [String]()
|
|
var addressParts = [String]()
|