You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

87 lines
2.8 KiB

//
// PhoneNumber.swift
// PhoneNumberKit
//
// Created by Roy Marmelstein on 26/09/2015.
// Copyright © 2015 Roy Marmelstein. All rights reserved.
//
import Foundation
/**
Parsed phone number object
- numberString: String used to generate phone number struct
- countryCode: Country dialing code as an unsigned. Int.
- leadingZero: Some countries (e.g. Italy) require leading zeros. Bool.
- nationalNumber: National number as an unsigned. Int.
- numberExtension: Extension if available. String. Optional
- type: Computed phone number type on access. Returns from an enumeration - PNPhoneNumberType.
*/
public struct PhoneNumber: Codable {
public let numberString: String
public let countryCode: UInt64
public let leadingZero: Bool
public let nationalNumber: UInt64
public let numberExtension: String?
public let type: PhoneNumberType
public let regionID: String?
}
extension PhoneNumber : Equatable {
public static func ==(lhs: PhoneNumber, rhs: PhoneNumber) -> Bool {
return (lhs.countryCode == rhs.countryCode)
&& (lhs.leadingZero == rhs.leadingZero)
&& (lhs.nationalNumber == rhs.nationalNumber)
&& (lhs.numberExtension == rhs.numberExtension)
}
}
extension PhoneNumber : Hashable {
public var hashValue: Int {
return countryCode.hashValue ^ nationalNumber.hashValue ^ leadingZero.hashValue ^ (numberExtension?.hashValue ?? 0)
}
}
extension PhoneNumber{
public static func notPhoneNumber() -> PhoneNumber{
return PhoneNumber(numberString: "", countryCode: 0, leadingZero: false, nationalNumber: 0, numberExtension: nil, type: .notParsed, regionID: nil)
}
public func notParsed() -> Bool{
return type == .notParsed
}
}
/// In past versions of PhoneNumebrKit you were able to initialize a PhoneNumber object to parse a String. Please use a PhoneNumberKit object's methods.
public extension PhoneNumber {
/**
DEPRECATED.
Parse a string into a phone number object using default region. Can throw.
- Parameter rawNumber: String to be parsed to phone number struct.
*/
@available(*, unavailable, message: "use PhoneNumberKit instead to produce PhoneNumbers")
public init(rawNumber: String) throws {
assertionFailure(PhoneNumberError.deprecated.localizedDescription)
throw PhoneNumberError.deprecated
}
/**
DEPRECATED.
Parse a string into a phone number object using custom region. Can throw.
- Parameter rawNumber: String to be parsed to phone number struct.
- Parameter region: ISO 639 compliant region code.
*/
@available(*, unavailable, message: "use PhoneNumberKit instead to produce PhoneNumbers")
public init(rawNumber: String, region: String) throws {
throw PhoneNumberError.deprecated
}
}