From d98a4248039807eace03580c2b7b195395dd293d Mon Sep 17 00:00:00 2001 From: Juan Alvarez Date: Sat, 14 Nov 2015 12:47:07 -0500 Subject: [PATCH 01/30] added support for instantiating currency with minor units (Cents, Pence, Satoshis, etc) with tests --- Money/Money.swift | 14 ++++++++++++++ Tests/MoneyTests.swift | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/Money/Money.swift b/Money/Money.swift index d421076..ae7565c 100644 --- a/Money/Money.swift +++ b/Money/Money.swift @@ -117,6 +117,20 @@ public struct _Money: MoneyType { public init(floatLiteral value: FloatLiteralType) { decimal = _Decimal(floatLiteral: value) } + + /** + Initialize a new value using the minorUnit to construct the final value. + + Minor units are the smallest unit for the denomination. (ex. Cents -> USD) + + - parameter minorUnit: a `IntegerLiteralType` for the system, probably `Int`. + */ + public init(minorUnit: IntegerLiteralType) { + let digits = pow(Double(10), Double(Currency.scale)) + let value = Double(minorUnit) / digits + + decimal = _Decimal(floatLiteral: value) + } /** Subtract a matching `_Money` from the receiver. diff --git a/Tests/MoneyTests.swift b/Tests/MoneyTests.swift index d80f506..fb3da1b 100644 --- a/Tests/MoneyTests.swift +++ b/Tests/MoneyTests.swift @@ -294,4 +294,45 @@ class MoneyValueCodingTests: XCTestCase { } } +class MoneyMinorUnitTests: XCTestCase { + + func test__money_with_USD_minor_amount() { + let money = USD(minorUnit: 3000) + + XCTAssertEqual(money, 30) + } + + func test__money_with_USD_minor_amount_equality() { + let moneyFromMinorUnit = USD(minorUnit: 3000) + let money: USD = 30 + + XCTAssertEqual(money, moneyFromMinorUnit) + } + + func test__money_with_JPY_minor_amount() { + let money = JPY(minorUnit: 3000) + + XCTAssertEqual(money, 3000) + } + + func test__money_with_JPY_minor_amount_equality() { + let moneyFromMinorUnit = JPY(minorUnit: 3000) + let money: JPY = 3000 + + XCTAssertEqual(money, moneyFromMinorUnit) + } + + func test__money_with_BTC_minor_amount() { + let moneyFromMinorUnit = BTC(minorUnit: 3000) + + XCTAssertEqual(moneyFromMinorUnit, 0.00003) + } + + func test__money_with_BTC_minor_amount_equality() { + let moneyFromMinorUnit = BTC(minorUnit: 3000) + let money: BTC = 0.00003 + + XCTAssertEqual(money, moneyFromMinorUnit) + } +} From e15223b4ff40db58e4d52e8f1b100476d2f0f3d7 Mon Sep 17 00:00:00 2001 From: Juan Alvarez Date: Sat, 14 Nov 2015 13:05:31 -0500 Subject: [PATCH 02/30] updated ReadMe to reflect minorUnit initializer --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index 33e7243..74ebff2 100644 --- a/README.md +++ b/README.md @@ -63,6 +63,20 @@ let money = pounds + euros Of course, `Money` supports the usual suspects of decimal arithmetic operators, so you can add, subtract, multiply, divide values of the same type, and values with `Int` and `Double` with the expected limitations. +## Currency Minor Units + +You can also initialize `Money` using the smallest units available to any currency + +```swift +let dollars = USD(minorUnit: 3250) +let yuen = JPY(minorUnit: 3000) +let bitcoin = BTC(minorUnit: 5000) + +print(“You have \(dollars), \(yuen) and \(bitcoin) Satoshis”) +``` + +> You have $ 32.50, JP¥ 3,000 and 0.00005 Satoshis + ## Foreign Currency Exchange (FX) To represent a foreign exchange transaction, i.e. converting `USD` to `EUR`, use a FX service provider. There is built in support for [Yahoo](https://finance.yahoo.com/currency-converter/#from=USD;to=EUR;amt=1) and [OpenExchangeRates.org](https://openexchangerates.org) services. But it’s possible for consumers to create their own too. From 59440cb8ebeb305152705c7015317aef361d3dff Mon Sep 17 00:00:00 2001 From: Juan Alvarez Date: Sat, 14 Nov 2015 13:07:27 -0500 Subject: [PATCH 03/30] updated minorUnit tests to use more diverse amounts --- Tests/MoneyTests.swift | 20 ++++---------------- 1 file changed, 4 insertions(+), 16 deletions(-) diff --git a/Tests/MoneyTests.swift b/Tests/MoneyTests.swift index fb3da1b..3a994eb 100644 --- a/Tests/MoneyTests.swift +++ b/Tests/MoneyTests.swift @@ -296,28 +296,16 @@ class MoneyValueCodingTests: XCTestCase { class MoneyMinorUnitTests: XCTestCase { - func test__money_with_USD_minor_amount() { - let money = USD(minorUnit: 3000) - - XCTAssertEqual(money, 30) - } - func test__money_with_USD_minor_amount_equality() { - let moneyFromMinorUnit = USD(minorUnit: 3000) - let money: USD = 30 + let moneyFromMinorUnit = USD(minorUnit: 3250) + let money: USD = 32.50 XCTAssertEqual(money, moneyFromMinorUnit) } - func test__money_with_JPY_minor_amount() { - let money = JPY(minorUnit: 3000) - - XCTAssertEqual(money, 3000) - } - func test__money_with_JPY_minor_amount_equality() { - let moneyFromMinorUnit = JPY(minorUnit: 3000) - let money: JPY = 3000 + let moneyFromMinorUnit = JPY(minorUnit: 2170) + let money: JPY = 2170 XCTAssertEqual(money, moneyFromMinorUnit) } From 7e33a3933ffb43db772e41e9ab51f876947450b4 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Sun, 15 Nov 2015 14:53:05 +0000 Subject: [PATCH 04/30] [MNY-22]: Refactors minor units --- Money/Decimal/DecimalNumberType.swift | 36 +++++++++++++++++++ Money/Decimal/NSDecimalNumberExtensions.swift | 11 ++++++ Money/Money.swift | 21 +++++++++++ 3 files changed, 68 insertions(+) diff --git a/Money/Decimal/DecimalNumberType.swift b/Money/Decimal/DecimalNumberType.swift index 9c6a0bd..4332ea4 100644 --- a/Money/Decimal/DecimalNumberType.swift +++ b/Money/Decimal/DecimalNumberType.swift @@ -100,6 +100,12 @@ public protocol DecimalNumberType: SignedNumberType, IntegerLiteralConvertible, */ var negative: Self { get } + /// Access am integer value representation + var integerValue: IntegerLiteralType { get } + + /// Access am float value representation + var floatValue: FloatLiteralType { get } + /** Initialize a new `DecimalNumberType` with the underlying storage. This is necessary in order to convert between different decimal number @@ -128,6 +134,15 @@ public protocol DecimalNumberType: SignedNumberType, IntegerLiteralConvertible, @warn_unused_result func add(_: Self) -> Self + /** + Multiply the receive by 10^n + + - parameter n: an `Int` for the 10 power index + - returns: another instance of this type. + */ + @warn_unused_result + func multiplyByPowerOf10(_: Int) -> Self + /** Multiply a matching `DecimalNumberType` with the receiver. @@ -197,6 +212,16 @@ public extension DecimalNumberType where DecimalStorageType == NSDecimalNumber { return Self(storage: storage.negateWithBehaviors(DecimalNumberBehavior.decimalNumberBehaviors)) } + /// Access am integer value representation + public var integerValue: Int { + return storage.integerValue + } + + /// Access am float value representation + public var floatValue: Double { + return storage.doubleValue + } + /// Text description. public var description: String { return "\(storage.description)" @@ -249,6 +274,17 @@ public extension DecimalNumberType where DecimalStorageType == NSDecimalNumber { return Self(storage: storage.add(other.storage, withBehaviors: DecimalNumberBehavior.decimalNumberBehaviors)) } + /** + Multiply the receive by 10^n + + - parameter n: an `Int` for the 10 power index + - returns: another instance of this type. + */ + @warn_unused_result + public func multiplyByPowerOf10(index: Int) -> Self { + return Self(storage: storage.multiplyByPowerOf10(index, withBehaviors: DecimalNumberBehavior.decimalNumberBehaviors)) + } + /** Multiply a matching `DecimalNumberType` with the receiver. diff --git a/Money/Decimal/NSDecimalNumberExtensions.swift b/Money/Decimal/NSDecimalNumberExtensions.swift index bb37faf..5924844 100644 --- a/Money/Decimal/NSDecimalNumberExtensions.swift +++ b/Money/Decimal/NSDecimalNumberExtensions.swift @@ -78,6 +78,17 @@ extension NSDecimalNumber: Comparable { return decimalNumberByAdding(other, withBehavior: behaviors) } + /** + Multiply the receive by 10^n + + - parameter n: an `Int` for the 10 power index + - returns: another instance of this type. + */ + @warn_unused_result + public func multiplyByPowerOf10(index: Int, withBehaviors behaviors: NSDecimalNumberBehaviors?) -> NSDecimalNumber { + return decimalNumberByMultiplyingByPowerOf10(Int16(index), withBehavior: behaviors) + } + /** Multiply a `NSDecimalNumber` with the receiver. diff --git a/Money/Money.swift b/Money/Money.swift index d421076..b2c653f 100644 --- a/Money/Money.swift +++ b/Money/Money.swift @@ -41,8 +41,14 @@ public protocol MoneyType: DecimalNumberType, ValueCoding { /// Access the underlying decimal var decimal: _Decimal { get } + /// Access the underlying minor units + var minorUnits: IntegerLiteralType { get } + /// Initialize the money with a decimal init(_: _Decimal) + + /// Initialize the money with a integer representing minor units + init(minorUnits: IntegerLiteralType) } /** @@ -64,6 +70,12 @@ public struct _Money: MoneyType { /// - returns: the `_Decimal` public let decimal: _Decimal + /// Access the underlying minor units + /// - returns: the `IntegerLiteralType` minor units + public var minorUnits: IntegerLiteralType { + return decimal.multiplyByPowerOf10(Currency.scale).integerValue + } + /// Access the underlying decimal storage. /// - returns: the `_Decimal.DecimalStorageType` public var storage: _Decimal.DecimalStorageType { @@ -90,6 +102,15 @@ public struct _Money: MoneyType { decimal = value } + /** + Initialize the money with a integer representing minor units. + + - parameter minorUnits: a `IntegerLiteralType` + */ + public init(minorUnits: IntegerLiteralType) { + decimal = _Decimal(integerLiteral: minorUnits).multiplyByPowerOf10(Currency.scale * -1) + } + /** Initialize a new value using the underlying decimal storage. At the moment, this is a `NSDecimalNumber`. From c56bcacc0c336a01ec9bc2e782ec656bf7690419 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Sun, 15 Nov 2015 15:06:46 +0000 Subject: [PATCH 05/30] [MNY-22]: Adds missing tests --- Money/Money.swift | 14 -------------- Tests/DecimalTests.swift | 13 +++++++++++++ Tests/MoneyTests.swift | 29 ++++++++++------------------- 3 files changed, 23 insertions(+), 33 deletions(-) diff --git a/Money/Money.swift b/Money/Money.swift index 335f6e3..bfd3288 100644 --- a/Money/Money.swift +++ b/Money/Money.swift @@ -139,20 +139,6 @@ public struct _Money: MoneyType { decimal = _Decimal(floatLiteral: value) } - /** - Initialize a new value using the minorUnit to construct the final value. - - Minor units are the smallest unit for the denomination. (ex. Cents -> USD) - - - parameter minorUnit: a `IntegerLiteralType` for the system, probably `Int`. - */ - public init(minorUnit: IntegerLiteralType) { - let digits = pow(Double(10), Double(Currency.scale)) - let value = Double(minorUnit) / digits - - decimal = _Decimal(floatLiteral: value) - } - /** Subtract a matching `_Money` from the receiver. diff --git a/Tests/DecimalTests.swift b/Tests/DecimalTests.swift index 04a5607..3db0f67 100644 --- a/Tests/DecimalTests.swift +++ b/Tests/DecimalTests.swift @@ -19,6 +19,19 @@ class DecimalTests: XCTestCase { } } +class DecimalAccessorTests: DecimalTests { + + func test__decimal_integer_value() { + decimal = 10.00 + XCTAssertEqual(decimal.integerValue, 10) + } + + func test__decimal_float_value() { + decimal = 10.00 + XCTAssertEqual(decimal.floatValue, 10.0) + } +} + class DecimalDescriptionTests: DecimalTests { func test__decimal_decription1() { diff --git a/Tests/MoneyTests.swift b/Tests/MoneyTests.swift index 3a994eb..f7867eb 100644 --- a/Tests/MoneyTests.swift +++ b/Tests/MoneyTests.swift @@ -297,30 +297,21 @@ class MoneyValueCodingTests: XCTestCase { class MoneyMinorUnitTests: XCTestCase { func test__money_with_USD_minor_amount_equality() { - let moneyFromMinorUnit = USD(minorUnit: 3250) - let money: USD = 32.50 - - XCTAssertEqual(money, moneyFromMinorUnit) + XCTAssertEqual(USD(minorUnits: 3250), 32.50) } func test__money_with_JPY_minor_amount_equality() { - let moneyFromMinorUnit = JPY(minorUnit: 2170) - let money: JPY = 2170 - - XCTAssertEqual(money, moneyFromMinorUnit) + XCTAssertEqual(JPY(minorUnits: 2170), 2170) } - - func test__money_with_BTC_minor_amount() { - let moneyFromMinorUnit = BTC(minorUnit: 3000) - - XCTAssertEqual(moneyFromMinorUnit, 0.00003) - } - + func test__money_with_BTC_minor_amount_equality() { - let moneyFromMinorUnit = BTC(minorUnit: 3000) - let money: BTC = 0.00003 - - XCTAssertEqual(money, moneyFromMinorUnit) + XCTAssertEqual(BTC(minorUnits: 3000), 0.00003) + } + + func test__money_access_minor_units() { + XCTAssertEqual(JPY(integerLiteral: 1).minorUnits, 1) + XCTAssertEqual(USD(integerLiteral: 1).minorUnits, 100) + XCTAssertEqual(BTC(integerLiteral: 1).minorUnits, 1_0000_0000) } } From 4f992560a1031e8c807f761e48fe5a024191e98d Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Sun, 15 Nov 2015 15:08:26 +0000 Subject: [PATCH 06/30] [MNY-22]: Updates gems --- Gemfile.lock | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index fe1c9d1..adb4302 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ GEM remote: https://rubygems.org/ specs: - activesupport (4.2.4) + activesupport (4.2.5) i18n (~> 0.7) json (~> 1.7, >= 1.7.7) minitest (~> 5.1) @@ -13,7 +13,7 @@ GEM extlib (>= 0.9.15) multi_json (>= 1.0.0) babosa (1.0.2) - cert (1.2.0) + cert (1.2.2) fastlane_core (>= 0.19.0, < 1.0.0) spaceship (>= 0.6.0) claide (0.9.1) @@ -25,12 +25,12 @@ GEM colored highline (>= 1.7.1) security - deliver (1.5.0) + deliver (1.5.1) credentials_manager (>= 0.9.0) fastimage (~> 1.6.3) fastlane_core (>= 0.19.0, < 1.0.0) plist (~> 3.1.0) - spaceship (>= 0.13.0, <= 1.0.0) + spaceship (>= 0.14.0, <= 1.0.0) domain_name (0.5.25) unf (>= 0.0.5, < 1.0.0) dotenv (2.0.2) @@ -42,7 +42,7 @@ GEM faraday (>= 0.7.4, < 0.10) fastimage (1.6.8) addressable (~> 2.3, >= 2.3.5) - fastlane (1.37.0) + fastlane (1.39.0) addressable (~> 2.3.8) cert (>= 1.1.0, < 2.0.0) credentials_manager (>= 0.10.0, < 1.0.0) @@ -57,11 +57,11 @@ GEM plist (~> 3.1.0) produce (>= 1.0.0, < 2.0.0) rest-client (~> 1.8.0) - scan (>= 0.2.0, < 1.0.0) - sigh (>= 1.1.1, < 2.0.0) + scan (>= 0.2.1, < 1.0.0) + sigh (>= 1.1.3, < 2.0.0) slack-notifier (~> 1.3) snapshot (>= 1.0.4, < 2.0.0) - spaceship (>= 0.13.0, < 1.0.0) + spaceship (>= 0.14.0, < 1.0.0) supply (>= 0.2.1, < 1.0.0) terminal-notifier (~> 1.6.2) terminal-table (~> 1.4.5) @@ -81,7 +81,7 @@ GEM rubyzip (~> 1.1.6) sentry-raven (~> 0.15) terminal-table (~> 1.4.5) - frameit (2.2.2) + frameit (2.3.0) deliver (> 0.3) fastimage (~> 1.6.3) fastlane_core (>= 0.16.0, < 1.0.0) @@ -150,10 +150,10 @@ GEM pem (1.0.1) fastlane_core (>= 0.21.0, < 1.0.0) spaceship (>= 0.12.0, < 1.0.0) - pilot (1.0.0) + pilot (1.0.1) credentials_manager (>= 0.3.0) fastlane_core (>= 0.16.1, < 1.0.0) - spaceship (>= 0.12.0, < 1.0.0) + spaceship (>= 0.14.0, < 1.0.0) terminal-table (~> 1.4.5) plist (3.1.0) produce (1.0.0) @@ -179,7 +179,7 @@ GEM security (0.1.3) sentry-raven (0.15.2) faraday (>= 0.7.6) - sigh (1.1.1) + sigh (1.1.3) fastlane_core (>= 0.19.0, < 1.0.0) plist (~> 3.1) spaceship (>= 0.12.3) @@ -191,12 +191,12 @@ GEM multi_json (~> 1.10) slack-notifier (1.4.0) slop (3.6.0) - snapshot (1.1.0) + snapshot (1.1.1) fastimage (~> 1.6.3) fastlane_core (>= 0.21.0, < 1.0.0) plist (~> 3.1.0) xcpretty (>= 0.2.1) - spaceship (0.13.0) + spaceship (0.14.1) colored credentials_manager (>= 0.9.0) faraday (~> 0.9) From 9c9ce25b7b997a4523eda37c41822c14fe60d4f1 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Sun, 15 Nov 2015 15:16:40 +0000 Subject: [PATCH 07/30] [MNY-22]: Modifies the README slightly --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 74ebff2..7478d45 100644 --- a/README.md +++ b/README.md @@ -63,14 +63,14 @@ let money = pounds + euros Of course, `Money` supports the usual suspects of decimal arithmetic operators, so you can add, subtract, multiply, divide values of the same type, and values with `Int` and `Double` with the expected limitations. -## Currency Minor Units +## Minor Units -You can also initialize `Money` using the smallest units available to any currency +`Money` can be initialized using the smallest units of currency: ```swift -let dollars = USD(minorUnit: 3250) -let yuen = JPY(minorUnit: 3000) -let bitcoin = BTC(minorUnit: 5000) +let dollars = USD(minorUnits: 3250) +let yuen = JPY(minorUnits: 3000) +let bitcoin = BTC(minorUnits: 5000) print(“You have \(dollars), \(yuen) and \(bitcoin) Satoshis”) ``` From 385bcf7e9f69362661cfcac06f9967666429ee6f Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Sun, 15 Nov 2015 15:20:23 +0000 Subject: [PATCH 08/30] [MNY-22]: Corrects spelling mistakes --- Money/Decimal/DecimalNumberType.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Money/Decimal/DecimalNumberType.swift b/Money/Decimal/DecimalNumberType.swift index 4332ea4..098acf2 100644 --- a/Money/Decimal/DecimalNumberType.swift +++ b/Money/Decimal/DecimalNumberType.swift @@ -100,10 +100,10 @@ public protocol DecimalNumberType: SignedNumberType, IntegerLiteralConvertible, */ var negative: Self { get } - /// Access am integer value representation + /// Access an integer value representation var integerValue: IntegerLiteralType { get } - /// Access am float value representation + /// Access a float value representation var floatValue: FloatLiteralType { get } /** @@ -212,12 +212,12 @@ public extension DecimalNumberType where DecimalStorageType == NSDecimalNumber { return Self(storage: storage.negateWithBehaviors(DecimalNumberBehavior.decimalNumberBehaviors)) } - /// Access am integer value representation + /// Access an integer value representation public var integerValue: Int { return storage.integerValue } - /// Access am float value representation + /// Access a float value representation public var floatValue: Double { return storage.doubleValue } From 6f2a4914ce70ba24f0d3454edf2a32f9518cb13b Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 13:15:30 +0000 Subject: [PATCH 09/30] =?UTF-8?q?[MNY-23]:=20Initial=20support=20for=20?= =?UTF-8?q?=EF=A3=BF=20Pay?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Money.xcodeproj/project.pbxproj | 18 ++++++ Money/ApplePay.swift | 84 ++++++++++++++++++++++++++++ Money/Money.swift | 44 ++++++++------- Tests/ApplePayTests.swift | 98 +++++++++++++++++++++++++++++++++ 4 files changed, 225 insertions(+), 19 deletions(-) create mode 100644 Money/ApplePay.swift create mode 100644 Tests/ApplePayTests.swift diff --git a/Money.xcodeproj/project.pbxproj b/Money.xcodeproj/project.pbxproj index c9155e9..3793e56 100644 --- a/Money.xcodeproj/project.pbxproj +++ b/Money.xcodeproj/project.pbxproj @@ -138,6 +138,13 @@ 65D3055B1BE94FA70032D99F /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65D305571BE94E850032D99F /* Result.framework */; }; 65D3055D1BE94FD40032D99F /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65D3055C1BE94FD40032D99F /* Result.framework */; }; 65D305601BE955020032D99F /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65D3055F1BE955020032D99F /* Result.framework */; }; + 65DEE31C1BF9FBEF0043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */; }; + 65DEE31D1BF9FBEF0043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */; }; + 65DEE31E1BF9FBEF0043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */; }; + 65DEE31F1BF9FBEF0043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */; }; + 65DEE3211BF9FD490043A718 /* ApplePayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3201BF9FD490043A718 /* ApplePayTests.swift */; }; + 65DEE3221BF9FD490043A718 /* ApplePayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3201BF9FD490043A718 /* ApplePayTests.swift */; }; + 65DEE3231BF9FD490043A718 /* ApplePayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3201BF9FD490043A718 /* ApplePayTests.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -244,6 +251,8 @@ 65D305591BE94F860032D99F /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/watchOS/Result.framework; sourceTree = ""; }; 65D3055C1BE94FD40032D99F /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/Mac/Result.framework; sourceTree = ""; }; 65D3055F1BE955020032D99F /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/iOS/Result.framework; sourceTree = ""; }; + 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplePay.swift; sourceTree = ""; }; + 65DEE3201BF9FD490043A718 /* ApplePayTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplePayTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -366,6 +375,7 @@ 65B92B301BE0E51E00F82024 /* Money */ = { isa = PBXGroup; children = ( + 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */, 657C0B1B1BE164B700CDB873 /* Autogenerated.swift */, 657C0B0D1BE10D2700CDB873 /* Currency.swift */, 65B92B421BE0F93F00F82024 /* Money.swift */, @@ -393,6 +403,7 @@ children = ( 65B92B381BE0E69500F82024 /* Info.plist */, 658863B61BEA2B0B003482ED /* Troll.png */, + 65DEE3201BF9FD490043A718 /* ApplePayTests.swift */, 653E84041BEF9B860020FF0E /* BitcoinTests.swift */, 65D305511BE8E8210032D99F /* DecimalTests.swift */, 656409441BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift */, @@ -833,6 +844,7 @@ 653E84281BEFF1050020FF0E /* Bitcoin.swift in Sources */, 6557F4D61BEB8720003CD2BF /* Decimal.swift in Sources */, 657C0B131BE1211900CDB873 /* Support.swift in Sources */, + 65DEE31C1BF9FBEF0043A718 /* ApplePay.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -844,6 +856,7 @@ 65B92B3F1BE0E72700F82024 /* MoneyTests.swift in Sources */, 65D305521BE8E8210032D99F /* DecimalTests.swift in Sources */, 6557F4E91BEB924D003CD2BF /* NSDecimalTests.swift in Sources */, + 65DEE3211BF9FD490043A718 /* ApplePayTests.swift in Sources */, 656409411BEAABCA00F82B4D /* FXYahooTests.swift in Sources */, 65A876F41BE7D1A100E26F22 /* FXTests.swift in Sources */, 6557F4ED1BEB97AC003CD2BF /* NSDecimalNumberTests.swift in Sources */, @@ -867,6 +880,7 @@ 653E84291BEFF1050020FF0E /* Bitcoin.swift in Sources */, 6557F4D71BEB8720003CD2BF /* Decimal.swift in Sources */, 657C0B141BE1211900CDB873 /* Support.swift in Sources */, + 65DEE31D1BF9FBEF0043A718 /* ApplePay.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -886,6 +900,7 @@ 653E842A1BEFF1050020FF0E /* Bitcoin.swift in Sources */, 6557F4D81BEB8720003CD2BF /* Decimal.swift in Sources */, 657C0B151BE1211900CDB873 /* Support.swift in Sources */, + 65DEE31E1BF9FBEF0043A718 /* ApplePay.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -897,6 +912,7 @@ 65B92B401BE0E72800F82024 /* MoneyTests.swift in Sources */, 65D305531BE8E8210032D99F /* DecimalTests.swift in Sources */, 6557F4EA1BEB924D003CD2BF /* NSDecimalTests.swift in Sources */, + 65DEE3221BF9FD490043A718 /* ApplePayTests.swift in Sources */, 656409421BEAABCA00F82B4D /* FXYahooTests.swift in Sources */, 65A876F51BE7D1A100E26F22 /* FXTests.swift in Sources */, 6557F4EE1BEB97AC003CD2BF /* NSDecimalNumberTests.swift in Sources */, @@ -920,6 +936,7 @@ 653E842B1BEFF1050020FF0E /* Bitcoin.swift in Sources */, 6557F4D91BEB8720003CD2BF /* Decimal.swift in Sources */, 657C0B161BE1211900CDB873 /* Support.swift in Sources */, + 65DEE31F1BF9FBEF0043A718 /* ApplePay.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -931,6 +948,7 @@ 65B92B411BE0E72900F82024 /* MoneyTests.swift in Sources */, 65D305541BE8E8210032D99F /* DecimalTests.swift in Sources */, 6557F4EB1BEB924D003CD2BF /* NSDecimalTests.swift in Sources */, + 65DEE3231BF9FD490043A718 /* ApplePayTests.swift in Sources */, 656409431BEAABCA00F82B4D /* FXYahooTests.swift in Sources */, 65A876F61BE7D1A100E26F22 /* FXTests.swift in Sources */, 6557F4EF1BEB97AC003CD2BF /* NSDecimalNumberTests.swift in Sources */, diff --git a/Money/ApplePay.swift b/Money/ApplePay.swift new file mode 100644 index 0000000..c9fcaef --- /dev/null +++ b/Money/ApplePay.swift @@ -0,0 +1,84 @@ +// +// ApplePay.swift +// Money +// +// Created by Daniel Thorpe on 16/11/2015. +// +// + +import Foundation +import PassKit + +// MARK: - Apple Pay equivalent types + +public enum PaymentSummaryItemType { + case Final, Pending +} + +public struct PaymentSummaryItem { + public let money: M + public let label: String + public let type: PaymentSummaryItemType + + internal var amount: M.DecimalStorageType { + return money.amount + } + + public init(money: M, label: String, type: PaymentSummaryItemType = .Final) { + self.money = money + self.label = label + self.type = type + } +} + +extension PaymentSummaryItem { + + public func setMoney(newMoney: M) -> PaymentSummaryItem { + return PaymentSummaryItem(money: newMoney, label: label, type: type) + } + + public func setLabel(newLabel: String) -> PaymentSummaryItem { + return PaymentSummaryItem(money: money, label: newLabel, type: type) + } + + public func setType(newType: PaymentSummaryItemType) -> PaymentSummaryItem { + return PaymentSummaryItem(money: money, label: label, type: newType) + } +} + + +// MARK: - Apple Pay type extensions + +@available(iOSApplicationExtension 9.0, *) +extension PKPaymentSummaryItemType { + + init(paymentSummaryItemType: PaymentSummaryItemType) { + switch paymentSummaryItemType { + case .Final: + self = .Final + case .Pending: + self = .Pending + } + } +} + +extension PKPaymentSummaryItem { + + convenience init(paymentSummaryItem: PaymentSummaryItem) { + self.init() + amount = paymentSummaryItem.amount + label = paymentSummaryItem.label + if #available(iOSApplicationExtension 9.0, *) { + type = PKPaymentSummaryItemType(paymentSummaryItemType: paymentSummaryItem.type) + } + } +} + +public extension PKPaymentRequest { + + convenience init>(items: Items) { + self.init() + currencyCode = M.Currency.code + paymentSummaryItems = items.map { PKPaymentSummaryItem(paymentSummaryItem: $0) } + } +} diff --git a/Money/Money.swift b/Money/Money.swift index bfd3288..ea11e21 100644 --- a/Money/Money.swift +++ b/Money/Money.swift @@ -51,6 +51,31 @@ public protocol MoneyType: DecimalNumberType, ValueCoding { init(minorUnits: IntegerLiteralType) } +// MARK: - MoneyType Extension + +public extension MoneyType where DecimalStorageType == NSDecimalNumber { + + var amount: DecimalStorageType { + return storage + } +} + +public extension MoneyType where DecimalStorageType == BankersDecimal.DecimalStorageType { + + /** + Use a `BankersDecimal` to convert the receive into another `MoneyType`. To use this + API the underlying `DecimalStorageType`s between the receiver, the other `MoneyType` + must both be the same a that of `BankersDecimal` (which luckily they are). + + - parameter rate: a `BankersDecimal` representing the rate. + - returns: another `MoneyType` value. + */ + @warn_unused_result + func convertWithRate(rate: BankersDecimal) -> Other { + return multiplyBy(Other(storage: rate.storage)) + } +} + /** # Money @@ -242,25 +267,6 @@ extension _Money: CustomStringConvertible { } } - -// MARK: - MoneyType Extension - -public extension MoneyType where DecimalStorageType == BankersDecimal.DecimalStorageType { - - /** - Use a `BankersDecimal` to convert the receive into another `MoneyType`. To use this - API the underlying `DecimalStorageType`s between the receiver, the other `MoneyType` - must both be the same a that of `BankersDecimal` (which luckily they are). - - - parameter rate: a `BankersDecimal` representing the rate. - - returns: another `MoneyType` value. - */ - @warn_unused_result - func convertWithRate(rate: BankersDecimal) -> Other { - return multiplyBy(Other(storage: rate.storage)) - } -} - // MARK: - Value Coding extension _Money: ValueCoding { diff --git a/Tests/ApplePayTests.swift b/Tests/ApplePayTests.swift new file mode 100644 index 0000000..20cfa75 --- /dev/null +++ b/Tests/ApplePayTests.swift @@ -0,0 +1,98 @@ +// +// ApplePayTests.swift +// Money +// +// Created by Daniel Thorpe on 16/11/2015. +// +// + +import XCTest +import PassKit +@testable import Money + +class ApplePayTests: XCTestCase { + + var item: PaymentSummaryItem! + var items: [PaymentSummaryItem] = [] + + override func setUp() { + super.setUp() + item = PaymentSummaryItem(money: 679, label: "iPad Pro, 32GB with WiFi", type: .Final) + items.append(item) + } +} + +class PaymentSummaryItemTests: ApplePayTests { + + func test__init__sets_money() { + XCTAssertEqual(item.money, 679) + } + + func test__init__sets_label() { + XCTAssertEqual(item.label, "iPad Pro, 32GB with WiFi") + } + + func test__init__sets_type() { + XCTAssertEqual(item.type, PaymentSummaryItemType.Final) + } + + func test__set_new_money__sets_money() { + item = item.setMoney(799) + XCTAssertEqual(item.money, 799) + XCTAssertEqual(item.label, "iPad Pro, 32GB with WiFi") + XCTAssertEqual(item.type, PaymentSummaryItemType.Final) + } + + func test__set_new_label__sets_label() { + item = item.setLabel("iPad Pro, 128GB with WiFi") + XCTAssertEqual(item.money, 679) + XCTAssertEqual(item.label, "iPad Pro, 128GB with WiFi") + XCTAssertEqual(item.type, PaymentSummaryItemType.Final) + } + + func test__set_new_type__sets_type() { + item = item.setType(.Pending) + XCTAssertEqual(item.money, 679) + XCTAssertEqual(item.label, "iPad Pro, 32GB with WiFi") + XCTAssertEqual(item.type, PaymentSummaryItemType.Pending) + } +} + +class PKPaymentSummaryItemTypeTests: ApplePayTests { + + func test__init__final() { + let type = PKPaymentSummaryItemType(paymentSummaryItemType: .Final) + XCTAssertEqual(type, PKPaymentSummaryItemType.Final) + } + + func test__init__pending() { + let type = PKPaymentSummaryItemType(paymentSummaryItemType: .Pending) + XCTAssertEqual(type, PKPaymentSummaryItemType.Pending) + } +} + +class PKPaymentSummaryItemTests: ApplePayTests { + + func test__init__with_item() { + let summaryItem = PKPaymentSummaryItem(paymentSummaryItem: item) + XCTAssertEqual(summaryItem.amount, NSDecimalNumber(integer: 679)) + XCTAssertEqual(summaryItem.label, "iPad Pro, 32GB with WiFi") + XCTAssertEqual(summaryItem.type, PKPaymentSummaryItemType.Final) + } +} + +class PKPaymentRequestTests: ApplePayTests { + + func test__init__with_items() { + items.append(PaymentSummaryItem(money: 799, label: "iPad Pro, 128GB with WiFi", type: .Final)) + items.append(PaymentSummaryItem(money: 899, label: "iPad Pro, 128GB with WiFi + Cellular", type: .Final)) + let request = PKPaymentRequest(items: items) + XCTAssertEqual(request.currencyCode, GBP.Currency.code) + XCTAssertEqual(request.paymentSummaryItems.count, 3) + let total = request.paymentSummaryItems.reduce(NSDecimalNumber.zero()) { (acc, item) in + return acc.decimalNumberByAdding(item.amount) + } + + XCTAssertEqual(total, items.map { $0.money }.reduce(0, combine: +).amount) + } +} From f2afbd04816512f43a539fba496135893e1102fd Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 13:17:21 +0000 Subject: [PATCH 10/30] [MNY-23]: Adds MIT license --- Money/ApplePay.swift | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/Money/ApplePay.swift b/Money/ApplePay.swift index c9fcaef..db67fac 100644 --- a/Money/ApplePay.swift +++ b/Money/ApplePay.swift @@ -2,9 +2,27 @@ // ApplePay.swift // Money // -// Created by Daniel Thorpe on 16/11/2015. +// The MIT License (MIT) // +// Copyright (c) 2015 Daniel Thorpe // +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +// SOFTWARE. import Foundation import PassKit From c46b740067c276b9469ea3e917063a75b509786b Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 13:25:15 +0000 Subject: [PATCH 11/30] [MNY-23]: Moves code into Shared/iOS directories --- Money.xcodeproj/project.pbxproj | 568 +++++++++--------- Money/{ => Shared}/Autogenerated.swift | 0 Money/{ => Shared}/Currency.swift | 0 Money/{ => Shared}/Decimal/Decimal.swift | 0 .../Decimal/DecimalNumberType.swift | 0 .../Decimal/NSDecimalExtensions.swift | 0 .../Decimal/NSDecimalNumberExtensions.swift | 0 Money/{ => Shared}/FX/Bitcoin.swift | 0 Money/{ => Shared}/FX/FX.swift | 0 Money/{ => Shared}/FX/OpenExchangeRates.swift | 0 Money/{ => Shared}/FX/Yahoo.swift | 0 Money/{ => Shared}/Money.swift | 0 Money/{ => Shared}/Support.swift | 0 Money/{ => iOS}/ApplePay.swift | 0 Tests/{ => Shared}/BitcoinTests.swift | 0 .../DVR Cassettes/CEX.IO BTCUSD.json | 0 .../DVR Cassettes/CEX.IO USDBTC.json | 0 .../OpenExchangeRates.org USDEUR.json | 0 .../DVR Cassettes/Yahoo GBPUSD.json | 0 Tests/{ => Shared}/DecimalTests.swift | 0 .../FXOpenExchangeRatesTests.swift | 0 Tests/{ => Shared}/FXTests.swift | 0 Tests/{ => Shared}/FXYahooTests.swift | 0 Tests/{ => Shared}/MoneyTests.swift | 0 Tests/{ => Shared}/NSDecimalNumberTests.swift | 0 Tests/{ => Shared}/NSDecimalTests.swift | 0 Tests/{ => Shared}/Troll.png | Bin Tests/{ => iOS}/ApplePayTests.swift | 0 28 files changed, 290 insertions(+), 278 deletions(-) rename Money/{ => Shared}/Autogenerated.swift (100%) rename Money/{ => Shared}/Currency.swift (100%) rename Money/{ => Shared}/Decimal/Decimal.swift (100%) rename Money/{ => Shared}/Decimal/DecimalNumberType.swift (100%) rename Money/{ => Shared}/Decimal/NSDecimalExtensions.swift (100%) rename Money/{ => Shared}/Decimal/NSDecimalNumberExtensions.swift (100%) rename Money/{ => Shared}/FX/Bitcoin.swift (100%) rename Money/{ => Shared}/FX/FX.swift (100%) rename Money/{ => Shared}/FX/OpenExchangeRates.swift (100%) rename Money/{ => Shared}/FX/Yahoo.swift (100%) rename Money/{ => Shared}/Money.swift (100%) rename Money/{ => Shared}/Support.swift (100%) rename Money/{ => iOS}/ApplePay.swift (100%) rename Tests/{ => Shared}/BitcoinTests.swift (100%) rename Tests/{ => Shared}/DVR Cassettes/CEX.IO BTCUSD.json (100%) rename Tests/{ => Shared}/DVR Cassettes/CEX.IO USDBTC.json (100%) rename Tests/{ => Shared}/DVR Cassettes/OpenExchangeRates.org USDEUR.json (100%) rename Tests/{ => Shared}/DVR Cassettes/Yahoo GBPUSD.json (100%) rename Tests/{ => Shared}/DecimalTests.swift (100%) rename Tests/{ => Shared}/FXOpenExchangeRatesTests.swift (100%) rename Tests/{ => Shared}/FXTests.swift (100%) rename Tests/{ => Shared}/FXYahooTests.swift (100%) rename Tests/{ => Shared}/MoneyTests.swift (100%) rename Tests/{ => Shared}/NSDecimalNumberTests.swift (100%) rename Tests/{ => Shared}/NSDecimalTests.swift (100%) rename Tests/{ => Shared}/Troll.png (100%) rename Tests/{ => iOS}/ApplePayTests.swift (100%) diff --git a/Money.xcodeproj/project.pbxproj b/Money.xcodeproj/project.pbxproj index 3793e56..4e79ff8 100644 --- a/Money.xcodeproj/project.pbxproj +++ b/Money.xcodeproj/project.pbxproj @@ -21,101 +21,16 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 653E84051BEF9B860020FF0E /* BitcoinTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84041BEF9B860020FF0E /* BitcoinTests.swift */; }; - 653E84061BEF9B860020FF0E /* BitcoinTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84041BEF9B860020FF0E /* BitcoinTests.swift */; }; - 653E84071BEF9B860020FF0E /* BitcoinTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84041BEF9B860020FF0E /* BitcoinTests.swift */; }; - 653E84161BEFC4BE0020FF0E /* CEX.IO BTCUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E84151BEFC4BE0020FF0E /* CEX.IO BTCUSD.json */; }; - 653E84171BEFC4BE0020FF0E /* CEX.IO BTCUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E84151BEFC4BE0020FF0E /* CEX.IO BTCUSD.json */; }; - 653E84181BEFC4BE0020FF0E /* CEX.IO BTCUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E84151BEFC4BE0020FF0E /* CEX.IO BTCUSD.json */; }; - 653E84191BEFC4BE0020FF0E /* CEX.IO BTCUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E84151BEFC4BE0020FF0E /* CEX.IO BTCUSD.json */; }; - 653E841A1BEFC4D40020FF0E /* CEX.IO BTCUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E84151BEFC4BE0020FF0E /* CEX.IO BTCUSD.json */; }; - 653E841B1BEFC4DA0020FF0E /* CEX.IO BTCUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E84151BEFC4BE0020FF0E /* CEX.IO BTCUSD.json */; }; - 653E841C1BEFC4E00020FF0E /* CEX.IO BTCUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E84151BEFC4BE0020FF0E /* CEX.IO BTCUSD.json */; }; - 653E841E1BEFCF720020FF0E /* CEX.IO USDBTC.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E841D1BEFCF720020FF0E /* CEX.IO USDBTC.json */; }; - 653E841F1BEFCF720020FF0E /* CEX.IO USDBTC.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E841D1BEFCF720020FF0E /* CEX.IO USDBTC.json */; }; - 653E84201BEFCF720020FF0E /* CEX.IO USDBTC.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E841D1BEFCF720020FF0E /* CEX.IO USDBTC.json */; }; - 653E84211BEFCF720020FF0E /* CEX.IO USDBTC.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E841D1BEFCF720020FF0E /* CEX.IO USDBTC.json */; }; - 653E84221BEFCF7F0020FF0E /* CEX.IO USDBTC.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E841D1BEFCF720020FF0E /* CEX.IO USDBTC.json */; }; - 653E84231BEFCF860020FF0E /* CEX.IO USDBTC.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E841D1BEFCF720020FF0E /* CEX.IO USDBTC.json */; }; - 653E84241BEFCF8A0020FF0E /* CEX.IO USDBTC.json in Resources */ = {isa = PBXBuildFile; fileRef = 653E841D1BEFCF720020FF0E /* CEX.IO USDBTC.json */; }; - 653E84281BEFF1050020FF0E /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84261BEFF1050020FF0E /* Bitcoin.swift */; }; - 653E84291BEFF1050020FF0E /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84261BEFF1050020FF0E /* Bitcoin.swift */; }; - 653E842A1BEFF1050020FF0E /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84261BEFF1050020FF0E /* Bitcoin.swift */; }; - 653E842B1BEFF1050020FF0E /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84261BEFF1050020FF0E /* Bitcoin.swift */; }; - 653E842C1BEFF1050020FF0E /* FX.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84271BEFF1050020FF0E /* FX.swift */; }; - 653E842D1BEFF1050020FF0E /* FX.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84271BEFF1050020FF0E /* FX.swift */; }; - 653E842E1BEFF1050020FF0E /* FX.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84271BEFF1050020FF0E /* FX.swift */; }; - 653E842F1BEFF1050020FF0E /* FX.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84271BEFF1050020FF0E /* FX.swift */; }; - 653E84311BEFF11F0020FF0E /* Yahoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84301BEFF11F0020FF0E /* Yahoo.swift */; }; - 653E84321BEFF11F0020FF0E /* Yahoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84301BEFF11F0020FF0E /* Yahoo.swift */; }; - 653E84331BEFF11F0020FF0E /* Yahoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84301BEFF11F0020FF0E /* Yahoo.swift */; }; - 653E84341BEFF11F0020FF0E /* Yahoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84301BEFF11F0020FF0E /* Yahoo.swift */; }; - 653E84361BEFF12E0020FF0E /* OpenExchangeRates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84351BEFF12E0020FF0E /* OpenExchangeRates.swift */; }; - 653E84371BEFF12E0020FF0E /* OpenExchangeRates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84351BEFF12E0020FF0E /* OpenExchangeRates.swift */; }; - 653E84381BEFF12E0020FF0E /* OpenExchangeRates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84351BEFF12E0020FF0E /* OpenExchangeRates.swift */; }; - 653E84391BEFF12E0020FF0E /* OpenExchangeRates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 653E84351BEFF12E0020FF0E /* OpenExchangeRates.swift */; }; 6557F4C71BEB7F32003CD2BF /* ValueCoding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6557F4C61BEB7F32003CD2BF /* ValueCoding.framework */; }; 6557F4C91BEB7F3D003CD2BF /* ValueCoding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6557F4C81BEB7F3D003CD2BF /* ValueCoding.framework */; }; 6557F4CB1BEB7F46003CD2BF /* ValueCoding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6557F4CA1BEB7F46003CD2BF /* ValueCoding.framework */; }; 6557F4CD1BEB7F51003CD2BF /* ValueCoding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6557F4CC1BEB7F51003CD2BF /* ValueCoding.framework */; }; - 6557F4D61BEB8720003CD2BF /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4D41BEB8720003CD2BF /* Decimal.swift */; }; - 6557F4D71BEB8720003CD2BF /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4D41BEB8720003CD2BF /* Decimal.swift */; }; - 6557F4D81BEB8720003CD2BF /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4D41BEB8720003CD2BF /* Decimal.swift */; }; - 6557F4D91BEB8720003CD2BF /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4D41BEB8720003CD2BF /* Decimal.swift */; }; - 6557F4DA1BEB8720003CD2BF /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4D51BEB8720003CD2BF /* NSDecimalNumberExtensions.swift */; }; - 6557F4DB1BEB8720003CD2BF /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4D51BEB8720003CD2BF /* NSDecimalNumberExtensions.swift */; }; - 6557F4DC1BEB8720003CD2BF /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4D51BEB8720003CD2BF /* NSDecimalNumberExtensions.swift */; }; - 6557F4DD1BEB8720003CD2BF /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4D51BEB8720003CD2BF /* NSDecimalNumberExtensions.swift */; }; - 6557F4DF1BEB8737003CD2BF /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4DE1BEB8737003CD2BF /* DecimalNumberType.swift */; }; - 6557F4E01BEB8737003CD2BF /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4DE1BEB8737003CD2BF /* DecimalNumberType.swift */; }; - 6557F4E11BEB8737003CD2BF /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4DE1BEB8737003CD2BF /* DecimalNumberType.swift */; }; - 6557F4E21BEB8737003CD2BF /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4DE1BEB8737003CD2BF /* DecimalNumberType.swift */; }; - 6557F4E41BEB8850003CD2BF /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4E31BEB8850003CD2BF /* NSDecimalExtensions.swift */; }; - 6557F4E51BEB8850003CD2BF /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4E31BEB8850003CD2BF /* NSDecimalExtensions.swift */; }; - 6557F4E61BEB8850003CD2BF /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4E31BEB8850003CD2BF /* NSDecimalExtensions.swift */; }; - 6557F4E71BEB8850003CD2BF /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4E31BEB8850003CD2BF /* NSDecimalExtensions.swift */; }; - 6557F4E91BEB924D003CD2BF /* NSDecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4E81BEB924D003CD2BF /* NSDecimalTests.swift */; }; - 6557F4EA1BEB924D003CD2BF /* NSDecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4E81BEB924D003CD2BF /* NSDecimalTests.swift */; }; - 6557F4EB1BEB924D003CD2BF /* NSDecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4E81BEB924D003CD2BF /* NSDecimalTests.swift */; }; - 6557F4ED1BEB97AC003CD2BF /* NSDecimalNumberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4EC1BEB97AC003CD2BF /* NSDecimalNumberTests.swift */; }; - 6557F4EE1BEB97AC003CD2BF /* NSDecimalNumberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4EC1BEB97AC003CD2BF /* NSDecimalNumberTests.swift */; }; - 6557F4EF1BEB97AC003CD2BF /* NSDecimalNumberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6557F4EC1BEB97AC003CD2BF /* NSDecimalNumberTests.swift */; }; - 6557F4F11BEBC5CD003CD2BF /* Yahoo GBPUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 6557F4F01BEBC5C1003CD2BF /* Yahoo GBPUSD.json */; }; - 6557F4F21BEBC5D2003CD2BF /* Yahoo GBPUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 6557F4F01BEBC5C1003CD2BF /* Yahoo GBPUSD.json */; }; - 6557F4F31BEBC5D7003CD2BF /* Yahoo GBPUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 6557F4F01BEBC5C1003CD2BF /* Yahoo GBPUSD.json */; }; - 656409411BEAABCA00F82B4D /* FXYahooTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656409401BEAABCA00F82B4D /* FXYahooTests.swift */; }; - 656409421BEAABCA00F82B4D /* FXYahooTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656409401BEAABCA00F82B4D /* FXYahooTests.swift */; }; - 656409431BEAABCA00F82B4D /* FXYahooTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656409401BEAABCA00F82B4D /* FXYahooTests.swift */; }; - 656409451BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656409441BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift */; }; - 656409461BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656409441BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift */; }; - 656409471BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 656409441BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift */; }; - 656409491BEAB89400F82B4D /* OpenExchangeRates.org USDEUR.json in Resources */ = {isa = PBXBuildFile; fileRef = 656409481BEAB88700F82B4D /* OpenExchangeRates.org USDEUR.json */; }; - 6564094A1BEAB89B00F82B4D /* OpenExchangeRates.org USDEUR.json in Resources */ = {isa = PBXBuildFile; fileRef = 656409481BEAB88700F82B4D /* OpenExchangeRates.org USDEUR.json */; }; - 6564094B1BEAB8A100F82B4D /* OpenExchangeRates.org USDEUR.json in Resources */ = {isa = PBXBuildFile; fileRef = 656409481BEAB88700F82B4D /* OpenExchangeRates.org USDEUR.json */; }; 6564094D1BEABA6100F82B4D /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6564094C1BEABA6100F82B4D /* SwiftyJSON.framework */; }; 6564094F1BEABA6E00F82B4D /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6564094E1BEABA6E00F82B4D /* SwiftyJSON.framework */; }; 656409511BEABA7A00F82B4D /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 656409501BEABA7A00F82B4D /* SwiftyJSON.framework */; }; 656409531BEABA8400F82B4D /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 656409521BEABA8400F82B4D /* SwiftyJSON.framework */; }; - 657C0B0E1BE10D2700CDB873 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B0D1BE10D2700CDB873 /* Currency.swift */; }; - 657C0B0F1BE10D2700CDB873 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B0D1BE10D2700CDB873 /* Currency.swift */; }; - 657C0B101BE10D2700CDB873 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B0D1BE10D2700CDB873 /* Currency.swift */; }; - 657C0B111BE10D2700CDB873 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B0D1BE10D2700CDB873 /* Currency.swift */; }; - 657C0B131BE1211900CDB873 /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B121BE1211900CDB873 /* Support.swift */; }; - 657C0B141BE1211900CDB873 /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B121BE1211900CDB873 /* Support.swift */; }; - 657C0B151BE1211900CDB873 /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B121BE1211900CDB873 /* Support.swift */; }; - 657C0B161BE1211900CDB873 /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B121BE1211900CDB873 /* Support.swift */; }; - 658863B91BEA2B26003482ED /* Troll.png in Resources */ = {isa = PBXBuildFile; fileRef = 658863B61BEA2B0B003482ED /* Troll.png */; }; - 658863BA1BEA2B2C003482ED /* Troll.png in Resources */ = {isa = PBXBuildFile; fileRef = 658863B61BEA2B0B003482ED /* Troll.png */; }; - 658863BB1BEA2B30003482ED /* Troll.png in Resources */ = {isa = PBXBuildFile; fileRef = 658863B61BEA2B0B003482ED /* Troll.png */; }; 658863BD1BEA34ED003482ED /* DVR.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 658863BC1BEA34ED003482ED /* DVR.framework */; }; 658863BF1BEA3514003482ED /* DVR.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 658863BE1BEA3514003482ED /* DVR.framework */; }; - 65A876E51BE79A9300E26F22 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B1B1BE164B700CDB873 /* Autogenerated.swift */; }; - 65A876E61BE79A9400E26F22 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B1B1BE164B700CDB873 /* Autogenerated.swift */; }; - 65A876E71BE79A9500E26F22 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B1B1BE164B700CDB873 /* Autogenerated.swift */; }; - 65A876E81BE79A9600E26F22 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 657C0B1B1BE164B700CDB873 /* Autogenerated.swift */; }; - 65A876F41BE7D1A100E26F22 /* FXTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A876F31BE7D1A100E26F22 /* FXTests.swift */; }; - 65A876F51BE7D1A100E26F22 /* FXTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A876F31BE7D1A100E26F22 /* FXTests.swift */; }; - 65A876F61BE7D1A100E26F22 /* FXTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65A876F31BE7D1A100E26F22 /* FXTests.swift */; }; 65B92ADE1BE0E4A700F82024 /* Money.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65B92AD31BE0E4A700F82024 /* Money.framework */; }; 65B92B071BE0E4D800F82024 /* Money.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65B92AFD1BE0E4D800F82024 /* Money.framework */; }; 65B92B231BE0E4E700F82024 /* Money.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65B92B191BE0E4E700F82024 /* Money.framework */; }; @@ -124,27 +39,102 @@ 65B92B3C1BE0E70500F82024 /* Money.h in Headers */ = {isa = PBXBuildFile; fileRef = 65B92B331BE0E51E00F82024 /* Money.h */; settings = {ATTRIBUTES = (Public, ); }; }; 65B92B3D1BE0E70500F82024 /* Money.h in Headers */ = {isa = PBXBuildFile; fileRef = 65B92B331BE0E51E00F82024 /* Money.h */; settings = {ATTRIBUTES = (Public, ); }; }; 65B92B3E1BE0E70600F82024 /* Money.h in Headers */ = {isa = PBXBuildFile; fileRef = 65B92B331BE0E51E00F82024 /* Money.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 65B92B3F1BE0E72700F82024 /* MoneyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B92B391BE0E69500F82024 /* MoneyTests.swift */; }; - 65B92B401BE0E72800F82024 /* MoneyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B92B391BE0E69500F82024 /* MoneyTests.swift */; }; - 65B92B411BE0E72900F82024 /* MoneyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B92B391BE0E69500F82024 /* MoneyTests.swift */; }; - 65B92B431BE0F93F00F82024 /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B92B421BE0F93F00F82024 /* Money.swift */; }; - 65B92B441BE0F93F00F82024 /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B92B421BE0F93F00F82024 /* Money.swift */; }; - 65B92B451BE0F93F00F82024 /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B92B421BE0F93F00F82024 /* Money.swift */; }; - 65B92B461BE0F93F00F82024 /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65B92B421BE0F93F00F82024 /* Money.swift */; }; - 65D305521BE8E8210032D99F /* DecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D305511BE8E8210032D99F /* DecimalTests.swift */; }; - 65D305531BE8E8210032D99F /* DecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D305511BE8E8210032D99F /* DecimalTests.swift */; }; - 65D305541BE8E8210032D99F /* DecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65D305511BE8E8210032D99F /* DecimalTests.swift */; }; 65D3055A1BE94F860032D99F /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65D305591BE94F860032D99F /* Result.framework */; }; 65D3055B1BE94FA70032D99F /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65D305571BE94E850032D99F /* Result.framework */; }; 65D3055D1BE94FD40032D99F /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65D3055C1BE94FD40032D99F /* Result.framework */; }; 65D305601BE955020032D99F /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65D3055F1BE955020032D99F /* Result.framework */; }; - 65DEE31C1BF9FBEF0043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */; }; - 65DEE31D1BF9FBEF0043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */; }; - 65DEE31E1BF9FBEF0043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */; }; - 65DEE31F1BF9FBEF0043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */; }; - 65DEE3211BF9FD490043A718 /* ApplePayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3201BF9FD490043A718 /* ApplePayTests.swift */; }; - 65DEE3221BF9FD490043A718 /* ApplePayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3201BF9FD490043A718 /* ApplePayTests.swift */; }; - 65DEE3231BF9FD490043A718 /* ApplePayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3201BF9FD490043A718 /* ApplePayTests.swift */; }; + 65DD22AE1BFA10F10054F62D /* BitcoinTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A01BFA10DF0054F62D /* BitcoinTests.swift */; }; + 65DD22AF1BFA10F10054F62D /* DecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A11BFA10DF0054F62D /* DecimalTests.swift */; }; + 65DD22B01BFA10F10054F62D /* FXOpenExchangeRatesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A71BFA10DF0054F62D /* FXOpenExchangeRatesTests.swift */; }; + 65DD22B11BFA10F10054F62D /* FXTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A81BFA10DF0054F62D /* FXTests.swift */; }; + 65DD22B21BFA10F10054F62D /* FXYahooTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A91BFA10DF0054F62D /* FXYahooTests.swift */; }; + 65DD22B31BFA10F10054F62D /* MoneyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22AA1BFA10DF0054F62D /* MoneyTests.swift */; }; + 65DD22B41BFA10F10054F62D /* NSDecimalNumberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22AB1BFA10DF0054F62D /* NSDecimalNumberTests.swift */; }; + 65DD22B51BFA10F10054F62D /* NSDecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22AC1BFA10DF0054F62D /* NSDecimalTests.swift */; }; + 65DD22B61BFA10F20054F62D /* BitcoinTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A01BFA10DF0054F62D /* BitcoinTests.swift */; }; + 65DD22B71BFA10F20054F62D /* DecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A11BFA10DF0054F62D /* DecimalTests.swift */; }; + 65DD22B81BFA10F20054F62D /* FXOpenExchangeRatesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A71BFA10DF0054F62D /* FXOpenExchangeRatesTests.swift */; }; + 65DD22B91BFA10F20054F62D /* FXTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A81BFA10DF0054F62D /* FXTests.swift */; }; + 65DD22BA1BFA10F20054F62D /* FXYahooTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A91BFA10DF0054F62D /* FXYahooTests.swift */; }; + 65DD22BB1BFA10F20054F62D /* MoneyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22AA1BFA10DF0054F62D /* MoneyTests.swift */; }; + 65DD22BC1BFA10F20054F62D /* NSDecimalNumberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22AB1BFA10DF0054F62D /* NSDecimalNumberTests.swift */; }; + 65DD22BD1BFA10F20054F62D /* NSDecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22AC1BFA10DF0054F62D /* NSDecimalTests.swift */; }; + 65DD22BE1BFA10F30054F62D /* BitcoinTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A01BFA10DF0054F62D /* BitcoinTests.swift */; }; + 65DD22BF1BFA10F30054F62D /* DecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A11BFA10DF0054F62D /* DecimalTests.swift */; }; + 65DD22C01BFA10F30054F62D /* FXOpenExchangeRatesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A71BFA10DF0054F62D /* FXOpenExchangeRatesTests.swift */; }; + 65DD22C11BFA10F30054F62D /* FXTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A81BFA10DF0054F62D /* FXTests.swift */; }; + 65DD22C21BFA10F30054F62D /* FXYahooTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22A91BFA10DF0054F62D /* FXYahooTests.swift */; }; + 65DD22C31BFA10F30054F62D /* MoneyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22AA1BFA10DF0054F62D /* MoneyTests.swift */; }; + 65DD22C41BFA10F30054F62D /* NSDecimalNumberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22AB1BFA10DF0054F62D /* NSDecimalNumberTests.swift */; }; + 65DD22C51BFA10F30054F62D /* NSDecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22AC1BFA10DF0054F62D /* NSDecimalTests.swift */; }; + 65DD22C61BFA10F60054F62D /* ApplePayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD229E1BFA10DF0054F62D /* ApplePayTests.swift */; }; + 65DD22C71BFA10F80054F62D /* ApplePayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD229E1BFA10DF0054F62D /* ApplePayTests.swift */; }; + 65DD22C81BFA110D0054F62D /* CEX.IO BTCUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A31BFA10DF0054F62D /* CEX.IO BTCUSD.json */; }; + 65DD22C91BFA110D0054F62D /* CEX.IO USDBTC.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A41BFA10DF0054F62D /* CEX.IO USDBTC.json */; }; + 65DD22CA1BFA110D0054F62D /* OpenExchangeRates.org USDEUR.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A51BFA10DF0054F62D /* OpenExchangeRates.org USDEUR.json */; }; + 65DD22CB1BFA110D0054F62D /* Yahoo GBPUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A61BFA10DF0054F62D /* Yahoo GBPUSD.json */; }; + 65DD22CC1BFA11150054F62D /* CEX.IO BTCUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A31BFA10DF0054F62D /* CEX.IO BTCUSD.json */; }; + 65DD22CD1BFA11150054F62D /* CEX.IO USDBTC.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A41BFA10DF0054F62D /* CEX.IO USDBTC.json */; }; + 65DD22CE1BFA11150054F62D /* OpenExchangeRates.org USDEUR.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A51BFA10DF0054F62D /* OpenExchangeRates.org USDEUR.json */; }; + 65DD22CF1BFA11150054F62D /* Yahoo GBPUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A61BFA10DF0054F62D /* Yahoo GBPUSD.json */; }; + 65DD22D01BFA111B0054F62D /* CEX.IO BTCUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A31BFA10DF0054F62D /* CEX.IO BTCUSD.json */; }; + 65DD22D11BFA111B0054F62D /* CEX.IO USDBTC.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A41BFA10DF0054F62D /* CEX.IO USDBTC.json */; }; + 65DD22D21BFA111B0054F62D /* OpenExchangeRates.org USDEUR.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A51BFA10DF0054F62D /* OpenExchangeRates.org USDEUR.json */; }; + 65DD22D31BFA111B0054F62D /* Yahoo GBPUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A61BFA10DF0054F62D /* Yahoo GBPUSD.json */; }; + 65DD22D41BFA12810054F62D /* Troll.png in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22AD1BFA10DF0054F62D /* Troll.png */; }; + 65DD22D51BFA12870054F62D /* Troll.png in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22AD1BFA10DF0054F62D /* Troll.png */; }; + 65DD22D61BFA128D0054F62D /* Troll.png in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22AD1BFA10DF0054F62D /* Troll.png */; }; + 65DEE3351BFA0F370043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3251BFA0F370043A718 /* ApplePay.swift */; }; + 65DEE3361BFA0F370043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3251BFA0F370043A718 /* ApplePay.swift */; }; + 65DEE3371BFA0F370043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3251BFA0F370043A718 /* ApplePay.swift */; }; + 65DEE3391BFA0F370043A718 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3271BFA0F370043A718 /* Autogenerated.swift */; }; + 65DEE33A1BFA0F370043A718 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3271BFA0F370043A718 /* Autogenerated.swift */; }; + 65DEE33B1BFA0F370043A718 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3271BFA0F370043A718 /* Autogenerated.swift */; }; + 65DEE33C1BFA0F370043A718 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3271BFA0F370043A718 /* Autogenerated.swift */; }; + 65DEE33D1BFA0F370043A718 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3281BFA0F370043A718 /* Currency.swift */; }; + 65DEE33E1BFA0F370043A718 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3281BFA0F370043A718 /* Currency.swift */; }; + 65DEE33F1BFA0F370043A718 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3281BFA0F370043A718 /* Currency.swift */; }; + 65DEE3401BFA0F370043A718 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3281BFA0F370043A718 /* Currency.swift */; }; + 65DEE3411BFA0F370043A718 /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32A1BFA0F370043A718 /* Decimal.swift */; }; + 65DEE3421BFA0F370043A718 /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32A1BFA0F370043A718 /* Decimal.swift */; }; + 65DEE3431BFA0F370043A718 /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32A1BFA0F370043A718 /* Decimal.swift */; }; + 65DEE3441BFA0F370043A718 /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32A1BFA0F370043A718 /* Decimal.swift */; }; + 65DEE3451BFA0F370043A718 /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32B1BFA0F370043A718 /* DecimalNumberType.swift */; }; + 65DEE3461BFA0F370043A718 /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32B1BFA0F370043A718 /* DecimalNumberType.swift */; }; + 65DEE3471BFA0F370043A718 /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32B1BFA0F370043A718 /* DecimalNumberType.swift */; }; + 65DEE3481BFA0F370043A718 /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32B1BFA0F370043A718 /* DecimalNumberType.swift */; }; + 65DEE3491BFA0F370043A718 /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32C1BFA0F370043A718 /* NSDecimalExtensions.swift */; }; + 65DEE34A1BFA0F370043A718 /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32C1BFA0F370043A718 /* NSDecimalExtensions.swift */; }; + 65DEE34B1BFA0F370043A718 /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32C1BFA0F370043A718 /* NSDecimalExtensions.swift */; }; + 65DEE34C1BFA0F370043A718 /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32C1BFA0F370043A718 /* NSDecimalExtensions.swift */; }; + 65DEE34D1BFA0F370043A718 /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32D1BFA0F370043A718 /* NSDecimalNumberExtensions.swift */; }; + 65DEE34E1BFA0F370043A718 /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32D1BFA0F370043A718 /* NSDecimalNumberExtensions.swift */; }; + 65DEE34F1BFA0F370043A718 /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32D1BFA0F370043A718 /* NSDecimalNumberExtensions.swift */; }; + 65DEE3501BFA0F370043A718 /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32D1BFA0F370043A718 /* NSDecimalNumberExtensions.swift */; }; + 65DEE3511BFA0F370043A718 /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32F1BFA0F370043A718 /* Bitcoin.swift */; }; + 65DEE3521BFA0F370043A718 /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32F1BFA0F370043A718 /* Bitcoin.swift */; }; + 65DEE3531BFA0F370043A718 /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32F1BFA0F370043A718 /* Bitcoin.swift */; }; + 65DEE3541BFA0F370043A718 /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE32F1BFA0F370043A718 /* Bitcoin.swift */; }; + 65DEE3551BFA0F370043A718 /* FX.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3301BFA0F370043A718 /* FX.swift */; }; + 65DEE3561BFA0F370043A718 /* FX.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3301BFA0F370043A718 /* FX.swift */; }; + 65DEE3571BFA0F370043A718 /* FX.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3301BFA0F370043A718 /* FX.swift */; }; + 65DEE3581BFA0F370043A718 /* FX.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3301BFA0F370043A718 /* FX.swift */; }; + 65DEE3591BFA0F370043A718 /* OpenExchangeRates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3311BFA0F370043A718 /* OpenExchangeRates.swift */; }; + 65DEE35A1BFA0F370043A718 /* OpenExchangeRates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3311BFA0F370043A718 /* OpenExchangeRates.swift */; }; + 65DEE35B1BFA0F370043A718 /* OpenExchangeRates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3311BFA0F370043A718 /* OpenExchangeRates.swift */; }; + 65DEE35C1BFA0F370043A718 /* OpenExchangeRates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3311BFA0F370043A718 /* OpenExchangeRates.swift */; }; + 65DEE35D1BFA0F370043A718 /* Yahoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3321BFA0F370043A718 /* Yahoo.swift */; }; + 65DEE35E1BFA0F370043A718 /* Yahoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3321BFA0F370043A718 /* Yahoo.swift */; }; + 65DEE35F1BFA0F370043A718 /* Yahoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3321BFA0F370043A718 /* Yahoo.swift */; }; + 65DEE3601BFA0F370043A718 /* Yahoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3321BFA0F370043A718 /* Yahoo.swift */; }; + 65DEE3611BFA0F370043A718 /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3331BFA0F370043A718 /* Money.swift */; }; + 65DEE3621BFA0F370043A718 /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3331BFA0F370043A718 /* Money.swift */; }; + 65DEE3631BFA0F370043A718 /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3331BFA0F370043A718 /* Money.swift */; }; + 65DEE3641BFA0F370043A718 /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3331BFA0F370043A718 /* Money.swift */; }; + 65DEE3651BFA0F370043A718 /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3341BFA0F370043A718 /* Support.swift */; }; + 65DEE3661BFA0F370043A718 /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3341BFA0F370043A718 /* Support.swift */; }; + 65DEE3671BFA0F370043A718 /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3341BFA0F370043A718 /* Support.swift */; }; + 65DEE3681BFA0F370043A718 /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3341BFA0F370043A718 /* Support.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -200,39 +190,17 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 653E84041BEF9B860020FF0E /* BitcoinTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BitcoinTests.swift; sourceTree = ""; }; - 653E84151BEFC4BE0020FF0E /* CEX.IO BTCUSD.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "CEX.IO BTCUSD.json"; path = "DVR Cassettes/CEX.IO BTCUSD.json"; sourceTree = ""; }; - 653E841D1BEFCF720020FF0E /* CEX.IO USDBTC.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "CEX.IO USDBTC.json"; path = "DVR Cassettes/CEX.IO USDBTC.json"; sourceTree = ""; }; - 653E84261BEFF1050020FF0E /* Bitcoin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Bitcoin.swift; sourceTree = ""; }; - 653E84271BEFF1050020FF0E /* FX.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FX.swift; sourceTree = ""; }; - 653E84301BEFF11F0020FF0E /* Yahoo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Yahoo.swift; sourceTree = ""; }; - 653E84351BEFF12E0020FF0E /* OpenExchangeRates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenExchangeRates.swift; sourceTree = ""; }; 6557F4C61BEB7F32003CD2BF /* ValueCoding.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ValueCoding.framework; path = Carthage/Build/iOS/ValueCoding.framework; sourceTree = ""; }; 6557F4C81BEB7F3D003CD2BF /* ValueCoding.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ValueCoding.framework; path = Carthage/Build/watchOS/ValueCoding.framework; sourceTree = ""; }; 6557F4CA1BEB7F46003CD2BF /* ValueCoding.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ValueCoding.framework; path = Carthage/Build/tvOS/ValueCoding.framework; sourceTree = ""; }; 6557F4CC1BEB7F51003CD2BF /* ValueCoding.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ValueCoding.framework; path = Carthage/Build/Mac/ValueCoding.framework; sourceTree = ""; }; - 6557F4D41BEB8720003CD2BF /* Decimal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Decimal.swift; sourceTree = ""; }; - 6557F4D51BEB8720003CD2BF /* NSDecimalNumberExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDecimalNumberExtensions.swift; sourceTree = ""; }; - 6557F4DE1BEB8737003CD2BF /* DecimalNumberType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DecimalNumberType.swift; sourceTree = ""; }; - 6557F4E31BEB8850003CD2BF /* NSDecimalExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDecimalExtensions.swift; sourceTree = ""; }; - 6557F4E81BEB924D003CD2BF /* NSDecimalTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDecimalTests.swift; sourceTree = ""; }; - 6557F4EC1BEB97AC003CD2BF /* NSDecimalNumberTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDecimalNumberTests.swift; sourceTree = ""; }; - 6557F4F01BEBC5C1003CD2BF /* Yahoo GBPUSD.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "Yahoo GBPUSD.json"; path = "DVR Cassettes/Yahoo GBPUSD.json"; sourceTree = ""; }; - 656409401BEAABCA00F82B4D /* FXYahooTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FXYahooTests.swift; sourceTree = ""; }; - 656409441BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FXOpenExchangeRatesTests.swift; sourceTree = ""; }; - 656409481BEAB88700F82B4D /* OpenExchangeRates.org USDEUR.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = "OpenExchangeRates.org USDEUR.json"; path = "DVR Cassettes/OpenExchangeRates.org USDEUR.json"; sourceTree = ""; }; 6564094C1BEABA6100F82B4D /* SwiftyJSON.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftyJSON.framework; path = Carthage/Build/iOS/SwiftyJSON.framework; sourceTree = ""; }; 6564094E1BEABA6E00F82B4D /* SwiftyJSON.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftyJSON.framework; path = Carthage/Build/watchOS/SwiftyJSON.framework; sourceTree = ""; }; 656409501BEABA7A00F82B4D /* SwiftyJSON.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftyJSON.framework; path = Carthage/Build/tvOS/SwiftyJSON.framework; sourceTree = ""; }; 656409521BEABA8400F82B4D /* SwiftyJSON.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftyJSON.framework; path = Carthage/Build/Mac/SwiftyJSON.framework; sourceTree = ""; }; - 657C0B0D1BE10D2700CDB873 /* Currency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Currency.swift; sourceTree = ""; }; - 657C0B121BE1211900CDB873 /* Support.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Support.swift; sourceTree = ""; }; - 657C0B1B1BE164B700CDB873 /* Autogenerated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Autogenerated.swift; sourceTree = ""; }; - 658863B61BEA2B0B003482ED /* Troll.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Troll.png; sourceTree = ""; }; 658863BC1BEA34ED003482ED /* DVR.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DVR.framework; path = Carthage/Build/iOS/DVR.framework; sourceTree = ""; }; 658863BE1BEA3514003482ED /* DVR.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = DVR.framework; path = Carthage/Build/Mac/DVR.framework; sourceTree = ""; }; 65A876D61BE6491800E26F22 /* Generate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Generate.swift; path = "Supporting Files/Generate.swift"; sourceTree = SOURCE_ROOT; }; - 65A876F31BE7D1A100E26F22 /* FXTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FXTests.swift; sourceTree = ""; }; 65B92AD31BE0E4A700F82024 /* Money.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Money.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 65B92ADD1BE0E4A700F82024 /* Money-iOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Money-iOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 65B92AF01BE0E4C800F82024 /* Money.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Money.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -244,15 +212,37 @@ 65B92B331BE0E51E00F82024 /* Money.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Money.h; path = "Supporting Files/Money.h"; sourceTree = SOURCE_ROOT; }; 65B92B361BE0E57800F82024 /* Money.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Money.xcconfig; path = "Supporting Files/Money.xcconfig"; sourceTree = SOURCE_ROOT; }; 65B92B381BE0E69500F82024 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 65B92B391BE0E69500F82024 /* MoneyTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoneyTests.swift; sourceTree = ""; }; - 65B92B421BE0F93F00F82024 /* Money.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Money.swift; sourceTree = ""; }; - 65D305511BE8E8210032D99F /* DecimalTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DecimalTests.swift; sourceTree = ""; }; 65D305571BE94E850032D99F /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/tvOS/Result.framework; sourceTree = ""; }; 65D305591BE94F860032D99F /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/watchOS/Result.framework; sourceTree = ""; }; 65D3055C1BE94FD40032D99F /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/Mac/Result.framework; sourceTree = ""; }; 65D3055F1BE955020032D99F /* Result.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Result.framework; path = Carthage/Build/iOS/Result.framework; sourceTree = ""; }; - 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplePay.swift; sourceTree = ""; }; - 65DEE3201BF9FD490043A718 /* ApplePayTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplePayTests.swift; sourceTree = ""; }; + 65DD229E1BFA10DF0054F62D /* ApplePayTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplePayTests.swift; sourceTree = ""; }; + 65DD22A01BFA10DF0054F62D /* BitcoinTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BitcoinTests.swift; sourceTree = ""; }; + 65DD22A11BFA10DF0054F62D /* DecimalTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DecimalTests.swift; sourceTree = ""; }; + 65DD22A31BFA10DF0054F62D /* CEX.IO BTCUSD.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "CEX.IO BTCUSD.json"; sourceTree = ""; }; + 65DD22A41BFA10DF0054F62D /* CEX.IO USDBTC.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "CEX.IO USDBTC.json"; sourceTree = ""; }; + 65DD22A51BFA10DF0054F62D /* OpenExchangeRates.org USDEUR.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "OpenExchangeRates.org USDEUR.json"; sourceTree = ""; }; + 65DD22A61BFA10DF0054F62D /* Yahoo GBPUSD.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; path = "Yahoo GBPUSD.json"; sourceTree = ""; }; + 65DD22A71BFA10DF0054F62D /* FXOpenExchangeRatesTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FXOpenExchangeRatesTests.swift; sourceTree = ""; }; + 65DD22A81BFA10DF0054F62D /* FXTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FXTests.swift; sourceTree = ""; }; + 65DD22A91BFA10DF0054F62D /* FXYahooTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FXYahooTests.swift; sourceTree = ""; }; + 65DD22AA1BFA10DF0054F62D /* MoneyTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MoneyTests.swift; sourceTree = ""; }; + 65DD22AB1BFA10DF0054F62D /* NSDecimalNumberTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDecimalNumberTests.swift; sourceTree = ""; }; + 65DD22AC1BFA10DF0054F62D /* NSDecimalTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDecimalTests.swift; sourceTree = ""; }; + 65DD22AD1BFA10DF0054F62D /* Troll.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Troll.png; sourceTree = ""; }; + 65DEE3251BFA0F370043A718 /* ApplePay.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ApplePay.swift; sourceTree = ""; }; + 65DEE3271BFA0F370043A718 /* Autogenerated.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Autogenerated.swift; sourceTree = ""; }; + 65DEE3281BFA0F370043A718 /* Currency.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Currency.swift; sourceTree = ""; }; + 65DEE32A1BFA0F370043A718 /* Decimal.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Decimal.swift; sourceTree = ""; }; + 65DEE32B1BFA0F370043A718 /* DecimalNumberType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DecimalNumberType.swift; sourceTree = ""; }; + 65DEE32C1BFA0F370043A718 /* NSDecimalExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDecimalExtensions.swift; sourceTree = ""; }; + 65DEE32D1BFA0F370043A718 /* NSDecimalNumberExtensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSDecimalNumberExtensions.swift; sourceTree = ""; }; + 65DEE32F1BFA0F370043A718 /* Bitcoin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Bitcoin.swift; sourceTree = ""; }; + 65DEE3301BFA0F370043A718 /* FX.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FX.swift; sourceTree = ""; }; + 65DEE3311BFA0F370043A718 /* OpenExchangeRates.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenExchangeRates.swift; sourceTree = ""; }; + 65DEE3321BFA0F370043A718 /* Yahoo.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Yahoo.swift; sourceTree = ""; }; + 65DEE3331BFA0F370043A718 /* Money.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Money.swift; sourceTree = ""; }; + 65DEE3341BFA0F370043A718 /* Support.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Support.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -325,28 +315,6 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 653E84251BEFF1050020FF0E /* FX */ = { - isa = PBXGroup; - children = ( - 653E84261BEFF1050020FF0E /* Bitcoin.swift */, - 653E84271BEFF1050020FF0E /* FX.swift */, - 653E84301BEFF11F0020FF0E /* Yahoo.swift */, - 653E84351BEFF12E0020FF0E /* OpenExchangeRates.swift */, - ); - path = FX; - sourceTree = ""; - }; - 6557F4D31BEB8720003CD2BF /* Decimal */ = { - isa = PBXGroup; - children = ( - 6557F4D41BEB8720003CD2BF /* Decimal.swift */, - 6557F4DE1BEB8737003CD2BF /* DecimalNumberType.swift */, - 6557F4D51BEB8720003CD2BF /* NSDecimalNumberExtensions.swift */, - 6557F4E31BEB8850003CD2BF /* NSDecimalExtensions.swift */, - ); - path = Decimal; - sourceTree = ""; - }; 65B92AC71BE0E46C00F82024 = { isa = PBXGroup; children = ( @@ -375,13 +343,8 @@ 65B92B301BE0E51E00F82024 /* Money */ = { isa = PBXGroup; children = ( - 65DEE31B1BF9FBEF0043A718 /* ApplePay.swift */, - 657C0B1B1BE164B700CDB873 /* Autogenerated.swift */, - 657C0B0D1BE10D2700CDB873 /* Currency.swift */, - 65B92B421BE0F93F00F82024 /* Money.swift */, - 657C0B121BE1211900CDB873 /* Support.swift */, - 6557F4D31BEB8720003CD2BF /* Decimal */, - 653E84251BEFF1050020FF0E /* FX */, + 65DEE3241BFA0F370043A718 /* iOS */, + 65DEE3261BFA0F370043A718 /* Shared */, ); path = Money; sourceTree = ""; @@ -402,17 +365,8 @@ isa = PBXGroup; children = ( 65B92B381BE0E69500F82024 /* Info.plist */, - 658863B61BEA2B0B003482ED /* Troll.png */, - 65DEE3201BF9FD490043A718 /* ApplePayTests.swift */, - 653E84041BEF9B860020FF0E /* BitcoinTests.swift */, - 65D305511BE8E8210032D99F /* DecimalTests.swift */, - 656409441BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift */, - 65A876F31BE7D1A100E26F22 /* FXTests.swift */, - 656409401BEAABCA00F82B4D /* FXYahooTests.swift */, - 65B92B391BE0E69500F82024 /* MoneyTests.swift */, - 6557F4EC1BEB97AC003CD2BF /* NSDecimalNumberTests.swift */, - 6557F4E81BEB924D003CD2BF /* NSDecimalTests.swift */, - 65FC56411BEA667300727556 /* Network Responses */, + 65DD229D1BFA10DF0054F62D /* iOS */, + 65DD229F1BFA10DF0054F62D /* Shared */, ); path = Tests; sourceTree = ""; @@ -438,15 +392,83 @@ name = Dependencies; sourceTree = ""; }; - 65FC56411BEA667300727556 /* Network Responses */ = { + 65DD229D1BFA10DF0054F62D /* iOS */ = { + isa = PBXGroup; + children = ( + 65DD229E1BFA10DF0054F62D /* ApplePayTests.swift */, + ); + path = iOS; + sourceTree = ""; + }; + 65DD229F1BFA10DF0054F62D /* Shared */ = { + isa = PBXGroup; + children = ( + 65DD22AD1BFA10DF0054F62D /* Troll.png */, + 65DD22A01BFA10DF0054F62D /* BitcoinTests.swift */, + 65DD22A11BFA10DF0054F62D /* DecimalTests.swift */, + 65DD22A71BFA10DF0054F62D /* FXOpenExchangeRatesTests.swift */, + 65DD22A81BFA10DF0054F62D /* FXTests.swift */, + 65DD22A91BFA10DF0054F62D /* FXYahooTests.swift */, + 65DD22AA1BFA10DF0054F62D /* MoneyTests.swift */, + 65DD22AB1BFA10DF0054F62D /* NSDecimalNumberTests.swift */, + 65DD22AC1BFA10DF0054F62D /* NSDecimalTests.swift */, + 65DD22A21BFA10DF0054F62D /* DVR Cassettes */, + ); + path = Shared; + sourceTree = ""; + }; + 65DD22A21BFA10DF0054F62D /* DVR Cassettes */ = { isa = PBXGroup; children = ( - 653E841D1BEFCF720020FF0E /* CEX.IO USDBTC.json */, - 653E84151BEFC4BE0020FF0E /* CEX.IO BTCUSD.json */, - 6557F4F01BEBC5C1003CD2BF /* Yahoo GBPUSD.json */, - 656409481BEAB88700F82B4D /* OpenExchangeRates.org USDEUR.json */, + 65DD22A31BFA10DF0054F62D /* CEX.IO BTCUSD.json */, + 65DD22A41BFA10DF0054F62D /* CEX.IO USDBTC.json */, + 65DD22A51BFA10DF0054F62D /* OpenExchangeRates.org USDEUR.json */, + 65DD22A61BFA10DF0054F62D /* Yahoo GBPUSD.json */, ); - name = "Network Responses"; + path = "DVR Cassettes"; + sourceTree = ""; + }; + 65DEE3241BFA0F370043A718 /* iOS */ = { + isa = PBXGroup; + children = ( + 65DEE3251BFA0F370043A718 /* ApplePay.swift */, + ); + path = iOS; + sourceTree = ""; + }; + 65DEE3261BFA0F370043A718 /* Shared */ = { + isa = PBXGroup; + children = ( + 65DEE3271BFA0F370043A718 /* Autogenerated.swift */, + 65DEE3281BFA0F370043A718 /* Currency.swift */, + 65DEE3291BFA0F370043A718 /* Decimal */, + 65DEE32E1BFA0F370043A718 /* FX */, + 65DEE3331BFA0F370043A718 /* Money.swift */, + 65DEE3341BFA0F370043A718 /* Support.swift */, + ); + path = Shared; + sourceTree = ""; + }; + 65DEE3291BFA0F370043A718 /* Decimal */ = { + isa = PBXGroup; + children = ( + 65DEE32A1BFA0F370043A718 /* Decimal.swift */, + 65DEE32B1BFA0F370043A718 /* DecimalNumberType.swift */, + 65DEE32C1BFA0F370043A718 /* NSDecimalExtensions.swift */, + 65DEE32D1BFA0F370043A718 /* NSDecimalNumberExtensions.swift */, + ); + path = Decimal; + sourceTree = ""; + }; + 65DEE32E1BFA0F370043A718 /* FX */ = { + isa = PBXGroup; + children = ( + 65DEE32F1BFA0F370043A718 /* Bitcoin.swift */, + 65DEE3301BFA0F370043A718 /* FX.swift */, + 65DEE3311BFA0F370043A718 /* OpenExchangeRates.swift */, + 65DEE3321BFA0F370043A718 /* Yahoo.swift */, + ); + path = FX; sourceTree = ""; }; /* End PBXGroup section */ @@ -685,8 +707,6 @@ buildActionMask = 2147483647; files = ( 65B92B3A1BE0E69500F82024 /* Info.plist in Resources */, - 653E841E1BEFCF720020FF0E /* CEX.IO USDBTC.json in Resources */, - 653E84161BEFC4BE0020FF0E /* CEX.IO BTCUSD.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -694,11 +714,11 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84221BEFCF7F0020FF0E /* CEX.IO USDBTC.json in Resources */, - 653E841A1BEFC4D40020FF0E /* CEX.IO BTCUSD.json in Resources */, - 6557F4F11BEBC5CD003CD2BF /* Yahoo GBPUSD.json in Resources */, - 656409491BEAB89400F82B4D /* OpenExchangeRates.org USDEUR.json in Resources */, - 658863B91BEA2B26003482ED /* Troll.png in Resources */, + 65DD22D41BFA12810054F62D /* Troll.png in Resources */, + 65DD22C81BFA110D0054F62D /* CEX.IO BTCUSD.json in Resources */, + 65DD22C91BFA110D0054F62D /* CEX.IO USDBTC.json in Resources */, + 65DD22CA1BFA110D0054F62D /* OpenExchangeRates.org USDEUR.json in Resources */, + 65DD22CB1BFA110D0054F62D /* Yahoo GBPUSD.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -706,8 +726,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84171BEFC4BE0020FF0E /* CEX.IO BTCUSD.json in Resources */, - 653E841F1BEFCF720020FF0E /* CEX.IO USDBTC.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -715,8 +733,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84181BEFC4BE0020FF0E /* CEX.IO BTCUSD.json in Resources */, - 653E84201BEFCF720020FF0E /* CEX.IO USDBTC.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -724,11 +740,11 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84231BEFCF860020FF0E /* CEX.IO USDBTC.json in Resources */, - 653E841B1BEFC4DA0020FF0E /* CEX.IO BTCUSD.json in Resources */, - 6557F4F21BEBC5D2003CD2BF /* Yahoo GBPUSD.json in Resources */, - 6564094A1BEAB89B00F82B4D /* OpenExchangeRates.org USDEUR.json in Resources */, - 658863BA1BEA2B2C003482ED /* Troll.png in Resources */, + 65DD22D51BFA12870054F62D /* Troll.png in Resources */, + 65DD22CC1BFA11150054F62D /* CEX.IO BTCUSD.json in Resources */, + 65DD22CD1BFA11150054F62D /* CEX.IO USDBTC.json in Resources */, + 65DD22CE1BFA11150054F62D /* OpenExchangeRates.org USDEUR.json in Resources */, + 65DD22CF1BFA11150054F62D /* Yahoo GBPUSD.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -736,8 +752,6 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84191BEFC4BE0020FF0E /* CEX.IO BTCUSD.json in Resources */, - 653E84211BEFCF720020FF0E /* CEX.IO USDBTC.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -745,11 +759,11 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84241BEFCF8A0020FF0E /* CEX.IO USDBTC.json in Resources */, - 653E841C1BEFC4E00020FF0E /* CEX.IO BTCUSD.json in Resources */, - 6557F4F31BEBC5D7003CD2BF /* Yahoo GBPUSD.json in Resources */, - 6564094B1BEAB8A100F82B4D /* OpenExchangeRates.org USDEUR.json in Resources */, - 658863BB1BEA2B30003482ED /* Troll.png in Resources */, + 65DD22D61BFA128D0054F62D /* Troll.png in Resources */, + 65DD22D01BFA111B0054F62D /* CEX.IO BTCUSD.json in Resources */, + 65DD22D11BFA111B0054F62D /* CEX.IO USDBTC.json in Resources */, + 65DD22D21BFA111B0054F62D /* OpenExchangeRates.org USDEUR.json in Resources */, + 65DD22D31BFA111B0054F62D /* Yahoo GBPUSD.json in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -766,7 +780,7 @@ ); name = "Generate Currency Type"; outputPaths = ( - "$(SRCROOT)/Money/Autogenerated.swift", + "$(SRCROOT)/Money/Shared/Autogenerated.swift", ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; @@ -832,19 +846,19 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84311BEFF11F0020FF0E /* Yahoo.swift in Sources */, - 657C0B0E1BE10D2700CDB873 /* Currency.swift in Sources */, - 653E84361BEFF12E0020FF0E /* OpenExchangeRates.swift in Sources */, - 65B92B431BE0F93F00F82024 /* Money.swift in Sources */, - 6557F4E41BEB8850003CD2BF /* NSDecimalExtensions.swift in Sources */, - 653E842C1BEFF1050020FF0E /* FX.swift in Sources */, - 65A876E51BE79A9300E26F22 /* Autogenerated.swift in Sources */, - 6557F4DA1BEB8720003CD2BF /* NSDecimalNumberExtensions.swift in Sources */, - 6557F4DF1BEB8737003CD2BF /* DecimalNumberType.swift in Sources */, - 653E84281BEFF1050020FF0E /* Bitcoin.swift in Sources */, - 6557F4D61BEB8720003CD2BF /* Decimal.swift in Sources */, - 657C0B131BE1211900CDB873 /* Support.swift in Sources */, - 65DEE31C1BF9FBEF0043A718 /* ApplePay.swift in Sources */, + 65DEE3651BFA0F370043A718 /* Support.swift in Sources */, + 65DEE3451BFA0F370043A718 /* DecimalNumberType.swift in Sources */, + 65DEE3491BFA0F370043A718 /* NSDecimalExtensions.swift in Sources */, + 65DEE34D1BFA0F370043A718 /* NSDecimalNumberExtensions.swift in Sources */, + 65DEE3411BFA0F370043A718 /* Decimal.swift in Sources */, + 65DEE33D1BFA0F370043A718 /* Currency.swift in Sources */, + 65DEE3611BFA0F370043A718 /* Money.swift in Sources */, + 65DEE3391BFA0F370043A718 /* Autogenerated.swift in Sources */, + 65DEE3551BFA0F370043A718 /* FX.swift in Sources */, + 65DEE35D1BFA0F370043A718 /* Yahoo.swift in Sources */, + 65DEE3511BFA0F370043A718 /* Bitcoin.swift in Sources */, + 65DEE3591BFA0F370043A718 /* OpenExchangeRates.swift in Sources */, + 65DEE3351BFA0F370043A718 /* ApplePay.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -852,15 +866,15 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84051BEF9B860020FF0E /* BitcoinTests.swift in Sources */, - 65B92B3F1BE0E72700F82024 /* MoneyTests.swift in Sources */, - 65D305521BE8E8210032D99F /* DecimalTests.swift in Sources */, - 6557F4E91BEB924D003CD2BF /* NSDecimalTests.swift in Sources */, - 65DEE3211BF9FD490043A718 /* ApplePayTests.swift in Sources */, - 656409411BEAABCA00F82B4D /* FXYahooTests.swift in Sources */, - 65A876F41BE7D1A100E26F22 /* FXTests.swift in Sources */, - 6557F4ED1BEB97AC003CD2BF /* NSDecimalNumberTests.swift in Sources */, - 656409451BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift in Sources */, + 65DD22BE1BFA10F30054F62D /* BitcoinTests.swift in Sources */, + 65DD22C11BFA10F30054F62D /* FXTests.swift in Sources */, + 65DD22C51BFA10F30054F62D /* NSDecimalTests.swift in Sources */, + 65DD22C31BFA10F30054F62D /* MoneyTests.swift in Sources */, + 65DD22C61BFA10F60054F62D /* ApplePayTests.swift in Sources */, + 65DD22C01BFA10F30054F62D /* FXOpenExchangeRatesTests.swift in Sources */, + 65DD22C21BFA10F30054F62D /* FXYahooTests.swift in Sources */, + 65DD22C41BFA10F30054F62D /* NSDecimalNumberTests.swift in Sources */, + 65DD22BF1BFA10F30054F62D /* DecimalTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -868,19 +882,19 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84321BEFF11F0020FF0E /* Yahoo.swift in Sources */, - 657C0B0F1BE10D2700CDB873 /* Currency.swift in Sources */, - 653E84371BEFF12E0020FF0E /* OpenExchangeRates.swift in Sources */, - 65B92B441BE0F93F00F82024 /* Money.swift in Sources */, - 6557F4E51BEB8850003CD2BF /* NSDecimalExtensions.swift in Sources */, - 653E842D1BEFF1050020FF0E /* FX.swift in Sources */, - 65A876E61BE79A9400E26F22 /* Autogenerated.swift in Sources */, - 6557F4DB1BEB8720003CD2BF /* NSDecimalNumberExtensions.swift in Sources */, - 6557F4E01BEB8737003CD2BF /* DecimalNumberType.swift in Sources */, - 653E84291BEFF1050020FF0E /* Bitcoin.swift in Sources */, - 6557F4D71BEB8720003CD2BF /* Decimal.swift in Sources */, - 657C0B141BE1211900CDB873 /* Support.swift in Sources */, - 65DEE31D1BF9FBEF0043A718 /* ApplePay.swift in Sources */, + 65DEE3661BFA0F370043A718 /* Support.swift in Sources */, + 65DEE3461BFA0F370043A718 /* DecimalNumberType.swift in Sources */, + 65DEE34A1BFA0F370043A718 /* NSDecimalExtensions.swift in Sources */, + 65DEE34E1BFA0F370043A718 /* NSDecimalNumberExtensions.swift in Sources */, + 65DEE3421BFA0F370043A718 /* Decimal.swift in Sources */, + 65DEE33E1BFA0F370043A718 /* Currency.swift in Sources */, + 65DEE3621BFA0F370043A718 /* Money.swift in Sources */, + 65DEE33A1BFA0F370043A718 /* Autogenerated.swift in Sources */, + 65DEE3561BFA0F370043A718 /* FX.swift in Sources */, + 65DEE35E1BFA0F370043A718 /* Yahoo.swift in Sources */, + 65DEE3521BFA0F370043A718 /* Bitcoin.swift in Sources */, + 65DEE35A1BFA0F370043A718 /* OpenExchangeRates.swift in Sources */, + 65DEE3361BFA0F370043A718 /* ApplePay.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -888,19 +902,19 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84331BEFF11F0020FF0E /* Yahoo.swift in Sources */, - 657C0B101BE10D2700CDB873 /* Currency.swift in Sources */, - 653E84381BEFF12E0020FF0E /* OpenExchangeRates.swift in Sources */, - 65B92B451BE0F93F00F82024 /* Money.swift in Sources */, - 6557F4E61BEB8850003CD2BF /* NSDecimalExtensions.swift in Sources */, - 653E842E1BEFF1050020FF0E /* FX.swift in Sources */, - 65A876E71BE79A9500E26F22 /* Autogenerated.swift in Sources */, - 6557F4DC1BEB8720003CD2BF /* NSDecimalNumberExtensions.swift in Sources */, - 6557F4E11BEB8737003CD2BF /* DecimalNumberType.swift in Sources */, - 653E842A1BEFF1050020FF0E /* Bitcoin.swift in Sources */, - 6557F4D81BEB8720003CD2BF /* Decimal.swift in Sources */, - 657C0B151BE1211900CDB873 /* Support.swift in Sources */, - 65DEE31E1BF9FBEF0043A718 /* ApplePay.swift in Sources */, + 65DEE3671BFA0F370043A718 /* Support.swift in Sources */, + 65DEE3471BFA0F370043A718 /* DecimalNumberType.swift in Sources */, + 65DEE34B1BFA0F370043A718 /* NSDecimalExtensions.swift in Sources */, + 65DEE34F1BFA0F370043A718 /* NSDecimalNumberExtensions.swift in Sources */, + 65DEE3431BFA0F370043A718 /* Decimal.swift in Sources */, + 65DEE33F1BFA0F370043A718 /* Currency.swift in Sources */, + 65DEE3631BFA0F370043A718 /* Money.swift in Sources */, + 65DEE33B1BFA0F370043A718 /* Autogenerated.swift in Sources */, + 65DEE3571BFA0F370043A718 /* FX.swift in Sources */, + 65DEE35F1BFA0F370043A718 /* Yahoo.swift in Sources */, + 65DEE3531BFA0F370043A718 /* Bitcoin.swift in Sources */, + 65DEE35B1BFA0F370043A718 /* OpenExchangeRates.swift in Sources */, + 65DEE3371BFA0F370043A718 /* ApplePay.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -908,15 +922,15 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84061BEF9B860020FF0E /* BitcoinTests.swift in Sources */, - 65B92B401BE0E72800F82024 /* MoneyTests.swift in Sources */, - 65D305531BE8E8210032D99F /* DecimalTests.swift in Sources */, - 6557F4EA1BEB924D003CD2BF /* NSDecimalTests.swift in Sources */, - 65DEE3221BF9FD490043A718 /* ApplePayTests.swift in Sources */, - 656409421BEAABCA00F82B4D /* FXYahooTests.swift in Sources */, - 65A876F51BE7D1A100E26F22 /* FXTests.swift in Sources */, - 6557F4EE1BEB97AC003CD2BF /* NSDecimalNumberTests.swift in Sources */, - 656409461BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift in Sources */, + 65DD22B61BFA10F20054F62D /* BitcoinTests.swift in Sources */, + 65DD22B91BFA10F20054F62D /* FXTests.swift in Sources */, + 65DD22BD1BFA10F20054F62D /* NSDecimalTests.swift in Sources */, + 65DD22BB1BFA10F20054F62D /* MoneyTests.swift in Sources */, + 65DD22C71BFA10F80054F62D /* ApplePayTests.swift in Sources */, + 65DD22B81BFA10F20054F62D /* FXOpenExchangeRatesTests.swift in Sources */, + 65DD22BA1BFA10F20054F62D /* FXYahooTests.swift in Sources */, + 65DD22BC1BFA10F20054F62D /* NSDecimalNumberTests.swift in Sources */, + 65DD22B71BFA10F20054F62D /* DecimalTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -924,19 +938,18 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84341BEFF11F0020FF0E /* Yahoo.swift in Sources */, - 657C0B111BE10D2700CDB873 /* Currency.swift in Sources */, - 653E84391BEFF12E0020FF0E /* OpenExchangeRates.swift in Sources */, - 65B92B461BE0F93F00F82024 /* Money.swift in Sources */, - 6557F4E71BEB8850003CD2BF /* NSDecimalExtensions.swift in Sources */, - 653E842F1BEFF1050020FF0E /* FX.swift in Sources */, - 65A876E81BE79A9600E26F22 /* Autogenerated.swift in Sources */, - 6557F4DD1BEB8720003CD2BF /* NSDecimalNumberExtensions.swift in Sources */, - 6557F4E21BEB8737003CD2BF /* DecimalNumberType.swift in Sources */, - 653E842B1BEFF1050020FF0E /* Bitcoin.swift in Sources */, - 6557F4D91BEB8720003CD2BF /* Decimal.swift in Sources */, - 657C0B161BE1211900CDB873 /* Support.swift in Sources */, - 65DEE31F1BF9FBEF0043A718 /* ApplePay.swift in Sources */, + 65DEE3681BFA0F370043A718 /* Support.swift in Sources */, + 65DEE3481BFA0F370043A718 /* DecimalNumberType.swift in Sources */, + 65DEE34C1BFA0F370043A718 /* NSDecimalExtensions.swift in Sources */, + 65DEE3501BFA0F370043A718 /* NSDecimalNumberExtensions.swift in Sources */, + 65DEE3441BFA0F370043A718 /* Decimal.swift in Sources */, + 65DEE3401BFA0F370043A718 /* Currency.swift in Sources */, + 65DEE3641BFA0F370043A718 /* Money.swift in Sources */, + 65DEE33C1BFA0F370043A718 /* Autogenerated.swift in Sources */, + 65DEE3581BFA0F370043A718 /* FX.swift in Sources */, + 65DEE3601BFA0F370043A718 /* Yahoo.swift in Sources */, + 65DEE3541BFA0F370043A718 /* Bitcoin.swift in Sources */, + 65DEE35C1BFA0F370043A718 /* OpenExchangeRates.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -944,15 +957,14 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 653E84071BEF9B860020FF0E /* BitcoinTests.swift in Sources */, - 65B92B411BE0E72900F82024 /* MoneyTests.swift in Sources */, - 65D305541BE8E8210032D99F /* DecimalTests.swift in Sources */, - 6557F4EB1BEB924D003CD2BF /* NSDecimalTests.swift in Sources */, - 65DEE3231BF9FD490043A718 /* ApplePayTests.swift in Sources */, - 656409431BEAABCA00F82B4D /* FXYahooTests.swift in Sources */, - 65A876F61BE7D1A100E26F22 /* FXTests.swift in Sources */, - 6557F4EF1BEB97AC003CD2BF /* NSDecimalNumberTests.swift in Sources */, - 656409471BEAB5DC00F82B4D /* FXOpenExchangeRatesTests.swift in Sources */, + 65DD22B51BFA10F10054F62D /* NSDecimalTests.swift in Sources */, + 65DD22B41BFA10F10054F62D /* NSDecimalNumberTests.swift in Sources */, + 65DD22AF1BFA10F10054F62D /* DecimalTests.swift in Sources */, + 65DD22B31BFA10F10054F62D /* MoneyTests.swift in Sources */, + 65DD22B11BFA10F10054F62D /* FXTests.swift in Sources */, + 65DD22B21BFA10F10054F62D /* FXYahooTests.swift in Sources */, + 65DD22B01BFA10F10054F62D /* FXOpenExchangeRatesTests.swift in Sources */, + 65DD22AE1BFA10F10054F62D /* BitcoinTests.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Money/Autogenerated.swift b/Money/Shared/Autogenerated.swift similarity index 100% rename from Money/Autogenerated.swift rename to Money/Shared/Autogenerated.swift diff --git a/Money/Currency.swift b/Money/Shared/Currency.swift similarity index 100% rename from Money/Currency.swift rename to Money/Shared/Currency.swift diff --git a/Money/Decimal/Decimal.swift b/Money/Shared/Decimal/Decimal.swift similarity index 100% rename from Money/Decimal/Decimal.swift rename to Money/Shared/Decimal/Decimal.swift diff --git a/Money/Decimal/DecimalNumberType.swift b/Money/Shared/Decimal/DecimalNumberType.swift similarity index 100% rename from Money/Decimal/DecimalNumberType.swift rename to Money/Shared/Decimal/DecimalNumberType.swift diff --git a/Money/Decimal/NSDecimalExtensions.swift b/Money/Shared/Decimal/NSDecimalExtensions.swift similarity index 100% rename from Money/Decimal/NSDecimalExtensions.swift rename to Money/Shared/Decimal/NSDecimalExtensions.swift diff --git a/Money/Decimal/NSDecimalNumberExtensions.swift b/Money/Shared/Decimal/NSDecimalNumberExtensions.swift similarity index 100% rename from Money/Decimal/NSDecimalNumberExtensions.swift rename to Money/Shared/Decimal/NSDecimalNumberExtensions.swift diff --git a/Money/FX/Bitcoin.swift b/Money/Shared/FX/Bitcoin.swift similarity index 100% rename from Money/FX/Bitcoin.swift rename to Money/Shared/FX/Bitcoin.swift diff --git a/Money/FX/FX.swift b/Money/Shared/FX/FX.swift similarity index 100% rename from Money/FX/FX.swift rename to Money/Shared/FX/FX.swift diff --git a/Money/FX/OpenExchangeRates.swift b/Money/Shared/FX/OpenExchangeRates.swift similarity index 100% rename from Money/FX/OpenExchangeRates.swift rename to Money/Shared/FX/OpenExchangeRates.swift diff --git a/Money/FX/Yahoo.swift b/Money/Shared/FX/Yahoo.swift similarity index 100% rename from Money/FX/Yahoo.swift rename to Money/Shared/FX/Yahoo.swift diff --git a/Money/Money.swift b/Money/Shared/Money.swift similarity index 100% rename from Money/Money.swift rename to Money/Shared/Money.swift diff --git a/Money/Support.swift b/Money/Shared/Support.swift similarity index 100% rename from Money/Support.swift rename to Money/Shared/Support.swift diff --git a/Money/ApplePay.swift b/Money/iOS/ApplePay.swift similarity index 100% rename from Money/ApplePay.swift rename to Money/iOS/ApplePay.swift diff --git a/Tests/BitcoinTests.swift b/Tests/Shared/BitcoinTests.swift similarity index 100% rename from Tests/BitcoinTests.swift rename to Tests/Shared/BitcoinTests.swift diff --git a/Tests/DVR Cassettes/CEX.IO BTCUSD.json b/Tests/Shared/DVR Cassettes/CEX.IO BTCUSD.json similarity index 100% rename from Tests/DVR Cassettes/CEX.IO BTCUSD.json rename to Tests/Shared/DVR Cassettes/CEX.IO BTCUSD.json diff --git a/Tests/DVR Cassettes/CEX.IO USDBTC.json b/Tests/Shared/DVR Cassettes/CEX.IO USDBTC.json similarity index 100% rename from Tests/DVR Cassettes/CEX.IO USDBTC.json rename to Tests/Shared/DVR Cassettes/CEX.IO USDBTC.json diff --git a/Tests/DVR Cassettes/OpenExchangeRates.org USDEUR.json b/Tests/Shared/DVR Cassettes/OpenExchangeRates.org USDEUR.json similarity index 100% rename from Tests/DVR Cassettes/OpenExchangeRates.org USDEUR.json rename to Tests/Shared/DVR Cassettes/OpenExchangeRates.org USDEUR.json diff --git a/Tests/DVR Cassettes/Yahoo GBPUSD.json b/Tests/Shared/DVR Cassettes/Yahoo GBPUSD.json similarity index 100% rename from Tests/DVR Cassettes/Yahoo GBPUSD.json rename to Tests/Shared/DVR Cassettes/Yahoo GBPUSD.json diff --git a/Tests/DecimalTests.swift b/Tests/Shared/DecimalTests.swift similarity index 100% rename from Tests/DecimalTests.swift rename to Tests/Shared/DecimalTests.swift diff --git a/Tests/FXOpenExchangeRatesTests.swift b/Tests/Shared/FXOpenExchangeRatesTests.swift similarity index 100% rename from Tests/FXOpenExchangeRatesTests.swift rename to Tests/Shared/FXOpenExchangeRatesTests.swift diff --git a/Tests/FXTests.swift b/Tests/Shared/FXTests.swift similarity index 100% rename from Tests/FXTests.swift rename to Tests/Shared/FXTests.swift diff --git a/Tests/FXYahooTests.swift b/Tests/Shared/FXYahooTests.swift similarity index 100% rename from Tests/FXYahooTests.swift rename to Tests/Shared/FXYahooTests.swift diff --git a/Tests/MoneyTests.swift b/Tests/Shared/MoneyTests.swift similarity index 100% rename from Tests/MoneyTests.swift rename to Tests/Shared/MoneyTests.swift diff --git a/Tests/NSDecimalNumberTests.swift b/Tests/Shared/NSDecimalNumberTests.swift similarity index 100% rename from Tests/NSDecimalNumberTests.swift rename to Tests/Shared/NSDecimalNumberTests.swift diff --git a/Tests/NSDecimalTests.swift b/Tests/Shared/NSDecimalTests.swift similarity index 100% rename from Tests/NSDecimalTests.swift rename to Tests/Shared/NSDecimalTests.swift diff --git a/Tests/Troll.png b/Tests/Shared/Troll.png similarity index 100% rename from Tests/Troll.png rename to Tests/Shared/Troll.png diff --git a/Tests/ApplePayTests.swift b/Tests/iOS/ApplePayTests.swift similarity index 100% rename from Tests/ApplePayTests.swift rename to Tests/iOS/ApplePayTests.swift From 6aab915ab6b5df8ddd0aa5792266b6b5eda9418c Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 13:51:22 +0000 Subject: [PATCH 12/30] [MNY-23]: Fixes Build Status badge to only look at development branch --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7478d45..0d9d49e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![](header.png) -[![Build status](https://badge.buildkite.com/265eb9670a2ef6b73eebf37769a8455c402509f71f09c4f51e.svg)](https://buildkite.com/blindingskies/money?branch=development) +[![Build status](https://badge.buildkite.com/265eb9670a2ef6b73eebf37769a8455c402509f71f09c4f51e.svg?branch=development)](https://buildkite.com/blindingskies/money?branch=development) [![codecov.io](https://codecov.io/github/danthorpe/Money/coverage.svg?branch=development&token=gI70muNOjA)](https://codecov.io/github/danthorpe/Money?branch=development) [![Cocoapods Compatible](https://img.shields.io/cocoapods/v/Money.svg)](https://img.shields.io/cocoapods/v/Money.svg) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) From ef4679c9264882ff6dabe58bd75b216354d3c087 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 13:52:51 +0000 Subject: [PATCH 13/30] [development]: Fixes build badge to dev branch --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7478d45..0d9d49e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ ![](header.png) -[![Build status](https://badge.buildkite.com/265eb9670a2ef6b73eebf37769a8455c402509f71f09c4f51e.svg)](https://buildkite.com/blindingskies/money?branch=development) +[![Build status](https://badge.buildkite.com/265eb9670a2ef6b73eebf37769a8455c402509f71f09c4f51e.svg?branch=development)](https://buildkite.com/blindingskies/money?branch=development) [![codecov.io](https://codecov.io/github/danthorpe/Money/coverage.svg?branch=development&token=gI70muNOjA)](https://codecov.io/github/danthorpe/Money?branch=development) [![Cocoapods Compatible](https://img.shields.io/cocoapods/v/Money.svg)](https://img.shields.io/cocoapods/v/Money.svg) [![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage) From 1b7f4e8992e91b89bb6086384300a9928f6c2e41 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 14:20:56 +0000 Subject: [PATCH 14/30] [MNY-23]: Adds ValueCoding to PaymentSummaryItem --- Money.xcodeproj/project.pbxproj | 4 ++-- Money/iOS/ApplePay.swift | 37 +++++++++++++++++++++++++++++---- Tests/iOS/ApplePayTests.swift | 20 ++++++++++++++++++ 3 files changed, 55 insertions(+), 6 deletions(-) diff --git a/Money.xcodeproj/project.pbxproj b/Money.xcodeproj/project.pbxproj index 4e79ff8..5bcd13d 100644 --- a/Money.xcodeproj/project.pbxproj +++ b/Money.xcodeproj/project.pbxproj @@ -441,10 +441,10 @@ children = ( 65DEE3271BFA0F370043A718 /* Autogenerated.swift */, 65DEE3281BFA0F370043A718 /* Currency.swift */, - 65DEE3291BFA0F370043A718 /* Decimal */, - 65DEE32E1BFA0F370043A718 /* FX */, 65DEE3331BFA0F370043A718 /* Money.swift */, 65DEE3341BFA0F370043A718 /* Support.swift */, + 65DEE3291BFA0F370043A718 /* Decimal */, + 65DEE32E1BFA0F370043A718 /* FX */, ); path = Shared; sourceTree = ""; diff --git a/Money/iOS/ApplePay.swift b/Money/iOS/ApplePay.swift index db67fac..aafdbc1 100644 --- a/Money/iOS/ApplePay.swift +++ b/Money/iOS/ApplePay.swift @@ -26,14 +26,18 @@ import Foundation import PassKit +import ValueCoding // MARK: - Apple Pay equivalent types -public enum PaymentSummaryItemType { - case Final, Pending +public enum PaymentSummaryItemType: Int { + case Final = 1, Pending } -public struct PaymentSummaryItem { +public struct PaymentSummaryItem: Equatable, ValueCoding { + + public typealias Coder = PaymentSummaryItemCoder + public let money: M public let label: String public let type: PaymentSummaryItemType @@ -64,6 +68,31 @@ extension PaymentSummaryItem { } } +public func ==(lhs: PaymentSummaryItem, rhs: PaymentSummaryItem) -> Bool { + return lhs.money == rhs.money && lhs.label == rhs.label && lhs.type == rhs.type +} + +public final class PaymentSummaryItemCoder: NSObject, NSCoding, CodingType { + + public let value: PaymentSummaryItem + + public required init(_ v: PaymentSummaryItem) { + value = v + } + + public init?(coder aDecoder: NSCoder) { + let money = M.decode(aDecoder.decodeObjectForKey("money")) + let label = aDecoder.decodeObjectForKey("label") as? String + let type = PaymentSummaryItemType(rawValue: aDecoder.decodeIntegerForKey("type")) + value = PaymentSummaryItem(money: money!, label: label!, type: type!) + } + + public func encodeWithCoder(aCoder: NSCoder) { + aCoder.encodeObject(value.money.encoded, forKey: "money") + aCoder.encodeObject(value.label, forKey: "label") + aCoder.encodeInteger(value.type.rawValue, forKey: "type") + } +} // MARK: - Apple Pay type extensions @@ -94,7 +123,7 @@ extension PKPaymentSummaryItem { public extension PKPaymentRequest { - convenience init>(items: Items) { + convenience init>(items: Items) { self.init() currencyCode = M.Currency.code paymentSummaryItems = items.map { PKPaymentSummaryItem(paymentSummaryItem: $0) } diff --git a/Tests/iOS/ApplePayTests.swift b/Tests/iOS/ApplePayTests.swift index 20cfa75..eb18d4e 100644 --- a/Tests/iOS/ApplePayTests.swift +++ b/Tests/iOS/ApplePayTests.swift @@ -56,6 +56,26 @@ class PaymentSummaryItemTests: ApplePayTests { XCTAssertEqual(item.label, "iPad Pro, 32GB with WiFi") XCTAssertEqual(item.type, PaymentSummaryItemType.Pending) } + + func test__equality() { + XCTAssertEqual(item, PaymentSummaryItem(money: 679, label: "iPad Pro, 32GB with WiFi", type: .Final)) + XCTAssertNotEqual(item, PaymentSummaryItem(money: 799, label: "iPad Pro, 128GB with WiFi", type: .Final)) + } +} + +class PaymentSummaryItemCodingTests: ApplePayTests { + + func archiveEncoded() -> NSData { + return NSKeyedArchiver.archivedDataWithRootObject(item.encoded) + } + + func unarchive(archive: NSData) -> PaymentSummaryItem? { + return PaymentSummaryItem.decode(NSKeyedUnarchiver.unarchiveObjectWithData(archive)) + } + + func test__encode_decode() { + XCTAssertEqual(unarchive(archiveEncoded()), item) + } } class PKPaymentSummaryItemTypeTests: ApplePayTests { From 3841a1c935ee8b339e1013a33d0123cbe4f1ff88 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 14:38:44 +0000 Subject: [PATCH 15/30] [MNY-23]: Implements Hashable for DecimalNumberType --- Money/Shared/Decimal/DecimalNumberType.swift | 33 +++++++++++--------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/Money/Shared/Decimal/DecimalNumberType.swift b/Money/Shared/Decimal/DecimalNumberType.swift index 098acf2..fee336c 100644 --- a/Money/Shared/Decimal/DecimalNumberType.swift +++ b/Money/Shared/Decimal/DecimalNumberType.swift @@ -83,7 +83,7 @@ public struct DecimalNumberBehavior { A protocol which defines the necessary interface to support decimal number calculations and operators. */ -public protocol DecimalNumberType: SignedNumberType, IntegerLiteralConvertible, FloatLiteralConvertible, CustomStringConvertible { +public protocol DecimalNumberType: Hashable, SignedNumberType, IntegerLiteralConvertible, FloatLiteralConvertible, CustomStringConvertible { typealias DecimalStorageType typealias DecimalNumberBehavior: DecimalNumberBehaviorType @@ -202,37 +202,42 @@ public protocol DecimalNumberType: SignedNumberType, IntegerLiteralConvertible, public extension DecimalNumberType where DecimalStorageType == NSDecimalNumber { /// Flag to indicate if the decimal number is less than zero - public var isNegative: Bool { + var isNegative: Bool { return storage.isNegative } /// The negative of Self. /// - returns: a `_Decimal` - public var negative: Self { + var negative: Self { return Self(storage: storage.negateWithBehaviors(DecimalNumberBehavior.decimalNumberBehaviors)) } /// Access an integer value representation - public var integerValue: Int { + var integerValue: Int { return storage.integerValue } /// Access a float value representation - public var floatValue: Double { + var floatValue: Double { return storage.doubleValue } /// Text description. - public var description: String { + var description: String { return "\(storage.description)" } + /// Hash value + var hashValue: Int { + return storage.hashValue + } + /** Initialize a new value using a `FloatLiteralType` - parameter floatLiteral: a `FloatLiteralType` for the system, probably `Double`. */ - public init(floatLiteral value: Swift.FloatLiteralType) { + init(floatLiteral value: Swift.FloatLiteralType) { self.init(storage: NSDecimalNumber(floatLiteral: value).decimalNumberByRoundingAccordingToBehavior(DecimalNumberBehavior.decimalNumberBehaviors)) } @@ -241,7 +246,7 @@ public extension DecimalNumberType where DecimalStorageType == NSDecimalNumber { - parameter integerLiteral: a `IntegerLiteralType` for the system, probably `Int`. */ - public init(integerLiteral value: Swift.IntegerLiteralType) { + init(integerLiteral value: Swift.IntegerLiteralType) { switch value { case 0: self.init(storage: NSDecimalNumber.zero()) @@ -259,7 +264,7 @@ public extension DecimalNumberType where DecimalStorageType == NSDecimalNumber { - returns: another instance of this type. */ @warn_unused_result - public func subtract(other: Self) -> Self { + func subtract(other: Self) -> Self { return Self(storage: storage.subtract(other.storage, withBehaviors: DecimalNumberBehavior.decimalNumberBehaviors)) } @@ -270,7 +275,7 @@ public extension DecimalNumberType where DecimalStorageType == NSDecimalNumber { - returns: another instance of this type. */ @warn_unused_result - public func add(other: Self) -> Self { + func add(other: Self) -> Self { return Self(storage: storage.add(other.storage, withBehaviors: DecimalNumberBehavior.decimalNumberBehaviors)) } @@ -281,7 +286,7 @@ public extension DecimalNumberType where DecimalStorageType == NSDecimalNumber { - returns: another instance of this type. */ @warn_unused_result - public func multiplyByPowerOf10(index: Int) -> Self { + func multiplyByPowerOf10(index: Int) -> Self { return Self(storage: storage.multiplyByPowerOf10(index, withBehaviors: DecimalNumberBehavior.decimalNumberBehaviors)) } @@ -292,7 +297,7 @@ public extension DecimalNumberType where DecimalStorageType == NSDecimalNumber { - returns: another instance of this type. */ @warn_unused_result - public func multiplyBy(other: Self) -> Self { + func multiplyBy(other: Self) -> Self { return Self(storage: storage.multiplyBy(other.storage, withBehaviors: DecimalNumberBehavior.decimalNumberBehaviors)) } @@ -315,7 +320,7 @@ public extension DecimalNumberType where DecimalStorageType == NSDecimalNumber { - returns: another instance of this type. */ @warn_unused_result - public func divideBy(other: Self) -> Self { + func divideBy(other: Self) -> Self { return Self(storage: storage.divideBy(other.storage, withBehaviors: DecimalNumberBehavior.decimalNumberBehaviors)) } @@ -338,7 +343,7 @@ public extension DecimalNumberType where DecimalStorageType == NSDecimalNumber { - returns: another instance of this type. */ @warn_unused_result - public func remainder(other: Self) -> Self { + func remainder(other: Self) -> Self { return Self(storage: storage.remainder(other.storage, withBehaviors: DecimalNumberBehavior.decimalNumberBehaviors)) } } From c947cd6ea6c74d7611e69f0730fe468cf597eccf Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 14:39:00 +0000 Subject: [PATCH 16/30] [MNY-23]: Adds Hashable to PaymentSummaryItem --- Money/iOS/ApplePay.swift | 6 +++++- Tests/iOS/ApplePayTests.swift | 8 ++++---- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Money/iOS/ApplePay.swift b/Money/iOS/ApplePay.swift index aafdbc1..4f88216 100644 --- a/Money/iOS/ApplePay.swift +++ b/Money/iOS/ApplePay.swift @@ -34,7 +34,7 @@ public enum PaymentSummaryItemType: Int { case Final = 1, Pending } -public struct PaymentSummaryItem: Equatable, ValueCoding { +public struct PaymentSummaryItem: Hashable, ValueCoding { public typealias Coder = PaymentSummaryItemCoder @@ -46,6 +46,10 @@ public struct PaymentSummaryItem! - var items: [PaymentSummaryItem] = [] + var items: Set> = [] override func setUp() { super.setUp() item = PaymentSummaryItem(money: 679, label: "iPad Pro, 32GB with WiFi", type: .Final) - items.append(item) + items.insert(item) } } @@ -104,8 +104,8 @@ class PKPaymentSummaryItemTests: ApplePayTests { class PKPaymentRequestTests: ApplePayTests { func test__init__with_items() { - items.append(PaymentSummaryItem(money: 799, label: "iPad Pro, 128GB with WiFi", type: .Final)) - items.append(PaymentSummaryItem(money: 899, label: "iPad Pro, 128GB with WiFi + Cellular", type: .Final)) + items.insert(PaymentSummaryItem(money: 799, label: "iPad Pro, 128GB with WiFi", type: .Final)) + items.insert(PaymentSummaryItem(money: 899, label: "iPad Pro, 128GB with WiFi + Cellular", type: .Final)) let request = PKPaymentRequest(items: items) XCTAssertEqual(request.currencyCode, GBP.Currency.code) XCTAssertEqual(request.paymentSummaryItems.count, 3) From b6d65ec3c0182908c9f6994c99adfc23c407334f Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 14:54:34 +0000 Subject: [PATCH 17/30] [MNY-23]: Renames money property to cost --- Money.xcodeproj/project.pbxproj | 6 ----- Money/iOS/ApplePay.swift | 46 ++++++++++++++++----------------- Tests/iOS/ApplePayTests.swift | 22 ++++++++-------- 3 files changed, 34 insertions(+), 40 deletions(-) diff --git a/Money.xcodeproj/project.pbxproj b/Money.xcodeproj/project.pbxproj index 5bcd13d..c7a6e14 100644 --- a/Money.xcodeproj/project.pbxproj +++ b/Money.xcodeproj/project.pbxproj @@ -68,7 +68,6 @@ 65DD22C41BFA10F30054F62D /* NSDecimalNumberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22AB1BFA10DF0054F62D /* NSDecimalNumberTests.swift */; }; 65DD22C51BFA10F30054F62D /* NSDecimalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD22AC1BFA10DF0054F62D /* NSDecimalTests.swift */; }; 65DD22C61BFA10F60054F62D /* ApplePayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD229E1BFA10DF0054F62D /* ApplePayTests.swift */; }; - 65DD22C71BFA10F80054F62D /* ApplePayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DD229E1BFA10DF0054F62D /* ApplePayTests.swift */; }; 65DD22C81BFA110D0054F62D /* CEX.IO BTCUSD.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A31BFA10DF0054F62D /* CEX.IO BTCUSD.json */; }; 65DD22C91BFA110D0054F62D /* CEX.IO USDBTC.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A41BFA10DF0054F62D /* CEX.IO USDBTC.json */; }; 65DD22CA1BFA110D0054F62D /* OpenExchangeRates.org USDEUR.json in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22A51BFA10DF0054F62D /* OpenExchangeRates.org USDEUR.json */; }; @@ -85,8 +84,6 @@ 65DD22D51BFA12870054F62D /* Troll.png in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22AD1BFA10DF0054F62D /* Troll.png */; }; 65DD22D61BFA128D0054F62D /* Troll.png in Resources */ = {isa = PBXBuildFile; fileRef = 65DD22AD1BFA10DF0054F62D /* Troll.png */; }; 65DEE3351BFA0F370043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3251BFA0F370043A718 /* ApplePay.swift */; }; - 65DEE3361BFA0F370043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3251BFA0F370043A718 /* ApplePay.swift */; }; - 65DEE3371BFA0F370043A718 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3251BFA0F370043A718 /* ApplePay.swift */; }; 65DEE3391BFA0F370043A718 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3271BFA0F370043A718 /* Autogenerated.swift */; }; 65DEE33A1BFA0F370043A718 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3271BFA0F370043A718 /* Autogenerated.swift */; }; 65DEE33B1BFA0F370043A718 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65DEE3271BFA0F370043A718 /* Autogenerated.swift */; }; @@ -894,7 +891,6 @@ 65DEE35E1BFA0F370043A718 /* Yahoo.swift in Sources */, 65DEE3521BFA0F370043A718 /* Bitcoin.swift in Sources */, 65DEE35A1BFA0F370043A718 /* OpenExchangeRates.swift in Sources */, - 65DEE3361BFA0F370043A718 /* ApplePay.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -914,7 +910,6 @@ 65DEE35F1BFA0F370043A718 /* Yahoo.swift in Sources */, 65DEE3531BFA0F370043A718 /* Bitcoin.swift in Sources */, 65DEE35B1BFA0F370043A718 /* OpenExchangeRates.swift in Sources */, - 65DEE3371BFA0F370043A718 /* ApplePay.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -926,7 +921,6 @@ 65DD22B91BFA10F20054F62D /* FXTests.swift in Sources */, 65DD22BD1BFA10F20054F62D /* NSDecimalTests.swift in Sources */, 65DD22BB1BFA10F20054F62D /* MoneyTests.swift in Sources */, - 65DD22C71BFA10F80054F62D /* ApplePayTests.swift in Sources */, 65DD22B81BFA10F20054F62D /* FXOpenExchangeRatesTests.swift in Sources */, 65DD22BA1BFA10F20054F62D /* FXYahooTests.swift in Sources */, 65DD22BC1BFA10F20054F62D /* NSDecimalNumberTests.swift in Sources */, diff --git a/Money/iOS/ApplePay.swift b/Money/iOS/ApplePay.swift index 4f88216..454b673 100644 --- a/Money/iOS/ApplePay.swift +++ b/Money/iOS/ApplePay.swift @@ -34,24 +34,24 @@ public enum PaymentSummaryItemType: Int { case Final = 1, Pending } -public struct PaymentSummaryItem: Hashable, ValueCoding { +public struct PaymentSummaryItem: Hashable, ValueCoding { - public typealias Coder = PaymentSummaryItemCoder + public typealias Coder = PaymentSummaryItemCoder - public let money: M + public let cost: Cost public let label: String public let type: PaymentSummaryItemType - internal var amount: M.DecimalStorageType { - return money.amount + internal var amount: Cost.DecimalStorageType { + return cost.amount } public var hashValue: Int { - return money.hashValue ^ (label.hashValue ^ type.hashValue) + return cost.hashValue ^ (label.hashValue ^ type.hashValue) } - public init(money: M, label: String, type: PaymentSummaryItemType = .Final) { - self.money = money + public init(cost: Cost, label: String, type: PaymentSummaryItemType = .Final) { + self.cost = cost self.label = label self.type = type } @@ -59,40 +59,40 @@ public struct PaymentSummaryItem PaymentSummaryItem { - return PaymentSummaryItem(money: newMoney, label: label, type: type) + public func setCost(newCost: Cost) -> PaymentSummaryItem { + return PaymentSummaryItem(cost: newCost, label: label, type: type) } public func setLabel(newLabel: String) -> PaymentSummaryItem { - return PaymentSummaryItem(money: money, label: newLabel, type: type) + return PaymentSummaryItem(cost: cost, label: newLabel, type: type) } public func setType(newType: PaymentSummaryItemType) -> PaymentSummaryItem { - return PaymentSummaryItem(money: money, label: label, type: newType) + return PaymentSummaryItem(cost: cost, label: label, type: newType) } } -public func ==(lhs: PaymentSummaryItem, rhs: PaymentSummaryItem) -> Bool { - return lhs.money == rhs.money && lhs.label == rhs.label && lhs.type == rhs.type +public func ==(lhs: PaymentSummaryItem, rhs: PaymentSummaryItem) -> Bool { + return lhs.cost == rhs.cost && lhs.label == rhs.label && lhs.type == rhs.type } -public final class PaymentSummaryItemCoder: NSObject, NSCoding, CodingType { +public final class PaymentSummaryItemCoder: NSObject, NSCoding, CodingType { - public let value: PaymentSummaryItem + public let value: PaymentSummaryItem - public required init(_ v: PaymentSummaryItem) { + public required init(_ v: PaymentSummaryItem) { value = v } public init?(coder aDecoder: NSCoder) { - let money = M.decode(aDecoder.decodeObjectForKey("money")) + let cost = Cost.decode(aDecoder.decodeObjectForKey("cost")) let label = aDecoder.decodeObjectForKey("label") as? String let type = PaymentSummaryItemType(rawValue: aDecoder.decodeIntegerForKey("type")) - value = PaymentSummaryItem(money: money!, label: label!, type: type!) + value = PaymentSummaryItem(cost: cost!, label: label!, type: type!) } public func encodeWithCoder(aCoder: NSCoder) { - aCoder.encodeObject(value.money.encoded, forKey: "money") + aCoder.encodeObject(value.cost.encoded, forKey: "cost") aCoder.encodeObject(value.label, forKey: "label") aCoder.encodeInteger(value.type.rawValue, forKey: "type") } @@ -115,7 +115,7 @@ extension PKPaymentSummaryItemType { extension PKPaymentSummaryItem { - convenience init(paymentSummaryItem: PaymentSummaryItem) { + convenience init(paymentSummaryItem: PaymentSummaryItem) { self.init() amount = paymentSummaryItem.amount label = paymentSummaryItem.label @@ -127,9 +127,9 @@ extension PKPaymentSummaryItem { public extension PKPaymentRequest { - convenience init>(items: Items) { + convenience init>(items: Items) { self.init() - currencyCode = M.Currency.code + currencyCode = Cost.Currency.code paymentSummaryItems = items.map { PKPaymentSummaryItem(paymentSummaryItem: $0) } } } diff --git a/Tests/iOS/ApplePayTests.swift b/Tests/iOS/ApplePayTests.swift index d449ec8..4cc1cf5 100644 --- a/Tests/iOS/ApplePayTests.swift +++ b/Tests/iOS/ApplePayTests.swift @@ -17,7 +17,7 @@ class ApplePayTests: XCTestCase { override func setUp() { super.setUp() - item = PaymentSummaryItem(money: 679, label: "iPad Pro, 32GB with WiFi", type: .Final) + item = PaymentSummaryItem(cost: 679, label: "iPad Pro, 32GB with WiFi", type: .Final) items.insert(item) } } @@ -25,7 +25,7 @@ class ApplePayTests: XCTestCase { class PaymentSummaryItemTests: ApplePayTests { func test__init__sets_money() { - XCTAssertEqual(item.money, 679) + XCTAssertEqual(item.cost, 679) } func test__init__sets_label() { @@ -37,29 +37,29 @@ class PaymentSummaryItemTests: ApplePayTests { } func test__set_new_money__sets_money() { - item = item.setMoney(799) - XCTAssertEqual(item.money, 799) + item = item.setCost(799) + XCTAssertEqual(item.cost, 799) XCTAssertEqual(item.label, "iPad Pro, 32GB with WiFi") XCTAssertEqual(item.type, PaymentSummaryItemType.Final) } func test__set_new_label__sets_label() { item = item.setLabel("iPad Pro, 128GB with WiFi") - XCTAssertEqual(item.money, 679) + XCTAssertEqual(item.cost, 679) XCTAssertEqual(item.label, "iPad Pro, 128GB with WiFi") XCTAssertEqual(item.type, PaymentSummaryItemType.Final) } func test__set_new_type__sets_type() { item = item.setType(.Pending) - XCTAssertEqual(item.money, 679) + XCTAssertEqual(item.cost, 679) XCTAssertEqual(item.label, "iPad Pro, 32GB with WiFi") XCTAssertEqual(item.type, PaymentSummaryItemType.Pending) } func test__equality() { - XCTAssertEqual(item, PaymentSummaryItem(money: 679, label: "iPad Pro, 32GB with WiFi", type: .Final)) - XCTAssertNotEqual(item, PaymentSummaryItem(money: 799, label: "iPad Pro, 128GB with WiFi", type: .Final)) + XCTAssertEqual(item, PaymentSummaryItem(cost: 679, label: "iPad Pro, 32GB with WiFi", type: .Final)) + XCTAssertNotEqual(item, PaymentSummaryItem(cost: 799, label: "iPad Pro, 128GB with WiFi", type: .Final)) } } @@ -104,8 +104,8 @@ class PKPaymentSummaryItemTests: ApplePayTests { class PKPaymentRequestTests: ApplePayTests { func test__init__with_items() { - items.insert(PaymentSummaryItem(money: 799, label: "iPad Pro, 128GB with WiFi", type: .Final)) - items.insert(PaymentSummaryItem(money: 899, label: "iPad Pro, 128GB with WiFi + Cellular", type: .Final)) + items.insert(PaymentSummaryItem(cost: 799, label: "iPad Pro, 128GB with WiFi", type: .Final)) + items.insert(PaymentSummaryItem(cost: 899, label: "iPad Pro, 128GB with WiFi + Cellular", type: .Final)) let request = PKPaymentRequest(items: items) XCTAssertEqual(request.currencyCode, GBP.Currency.code) XCTAssertEqual(request.paymentSummaryItems.count, 3) @@ -113,6 +113,6 @@ class PKPaymentRequestTests: ApplePayTests { return acc.decimalNumberByAdding(item.amount) } - XCTAssertEqual(total, items.map { $0.money }.reduce(0, combine: +).amount) + XCTAssertEqual(total, items.map { $0.cost }.reduce(0, combine: +).amount) } } From 3cd7835b861302609afdfebb59784eb0c6961d28 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 14:55:00 +0000 Subject: [PATCH 18/30] [MNY-23]: Updates README --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 0d9d49e..4fa8a2f 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,21 @@ print(“You have \(dollars), \(yuen) and \(bitcoin) Satoshis”) > You have $ 32.50, JP¥ 3,000 and 0.00005 Satoshis +##  Pay + +On iOS (not watchOS, tvOS or OS X), there is support in Money for using `Money` with  Pay. + +Create a `PaymentSummaryItem` in lieu of `PKPaymentSummaryItem` with a suitable `MoneyType`: + +```swift +let items = [ + PaymentSummaryItem(money: 9.99, label: “Something fancy.”), + PaymentSummaryItem(money: 5.99, label: “Something else fancy.”) +] +let request = PKPaymentRequest(items: items) +``` + + ## Foreign Currency Exchange (FX) To represent a foreign exchange transaction, i.e. converting `USD` to `EUR`, use a FX service provider. There is built in support for [Yahoo](https://finance.yahoo.com/currency-converter/#from=USD;to=EUR;amt=1) and [OpenExchangeRates.org](https://openexchangerates.org) services. But it’s possible for consumers to create their own too. From 7b53af8eb093a07e8ff40b2ed0cc039cf9eb3fdd Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 15:51:37 +0000 Subject: [PATCH 19/30] [MNY-23]: Updates example project --- Examples/Custom Money/Podfile.lock | 4 +- .../Pods/Local Podspecs/Money.podspec.json | 25 +- Examples/Custom Money/Pods/Manifest.lock | 4 +- .../Pods/Pods.xcodeproj/project.pbxproj | 701 +++++++++--------- .../xcshareddata/xcschemes/Money.xcscheme | 60 -- .../Target Support Files/Money/Info.plist | 40 +- .../Pods-Custom Money/Info.plist | 40 +- .../Target Support Files/Result/Info.plist | 40 +- .../SwiftyJSON/Info.plist | 40 +- .../ValueCoding/Info.plist | 40 +- 10 files changed, 490 insertions(+), 504 deletions(-) delete mode 100644 Examples/Custom Money/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Money.xcscheme diff --git a/Examples/Custom Money/Podfile.lock b/Examples/Custom Money/Podfile.lock index abb3aae..c58e599 100644 --- a/Examples/Custom Money/Podfile.lock +++ b/Examples/Custom Money/Podfile.lock @@ -1,5 +1,5 @@ PODS: - - Money (1.1.0): + - Money (1.2.1): - Result (= 0.6.0-beta.6) - SwiftyJSON - ValueCoding @@ -15,7 +15,7 @@ EXTERNAL SOURCES: :path: "../../" SPEC CHECKSUMS: - Money: 9b12218fa90413e429f9f623f52619bb89791722 + Money: 7bf4b32f795e1eb867c2fcebaaf90b3249824438 Result: dc390d0b58f9ec43fcd536f1ebdd130803cc6cbc SwiftyJSON: 592b53bee5ef3dd9b3bebc6b9cb7ee35426ae8c3 ValueCoding: 54486fde2d7b1c2f1eb46de260b95340abed5bde diff --git a/Examples/Custom Money/Pods/Local Podspecs/Money.podspec.json b/Examples/Custom Money/Pods/Local Podspecs/Money.podspec.json index 339aa0e..1ad5f85 100644 --- a/Examples/Custom Money/Pods/Local Podspecs/Money.podspec.json +++ b/Examples/Custom Money/Pods/Local Podspecs/Money.podspec.json @@ -1,6 +1,6 @@ { "name": "Money", - "version": "1.1.0", + "version": "1.2.1", "summary": "Swift types for working with Money.", "description": "Money is a Swift cross platform framework for iOS, watchOS, tvOS and OS X. \n\nIt provides types and functionality to help represent and manipulate money \nand currency related information.", "homepage": "https://github.com/danthorpe/Money", @@ -10,7 +10,7 @@ }, "source": { "git": "https://github.com/danthorpe/Money.git", - "tag": "1.1.0" + "tag": "1.2.1" }, "module_name": "Money", "social_media_url": "https://twitter.com/danthorpe", @@ -22,10 +22,25 @@ "watchos": "2.0" }, "source_files": [ - "Money/*.swift", - "Money/Decimal/*.swift", - "Money/FX/*.swift" + "Money/Shared/*.swift", + "Money/Shared/**/*.swift", + "Money/iOS" ], + "osx": { + "exclude_files": [ + "Money/iOS" + ] + }, + "watchos": { + "exclude_files": [ + "Money/iOS" + ] + }, + "tvos": { + "exclude_files": [ + "Money/iOS" + ] + }, "dependencies": { "ValueCoding": [ diff --git a/Examples/Custom Money/Pods/Manifest.lock b/Examples/Custom Money/Pods/Manifest.lock index abb3aae..c58e599 100644 --- a/Examples/Custom Money/Pods/Manifest.lock +++ b/Examples/Custom Money/Pods/Manifest.lock @@ -1,5 +1,5 @@ PODS: - - Money (1.1.0): + - Money (1.2.1): - Result (= 0.6.0-beta.6) - SwiftyJSON - ValueCoding @@ -15,7 +15,7 @@ EXTERNAL SOURCES: :path: "../../" SPEC CHECKSUMS: - Money: 9b12218fa90413e429f9f623f52619bb89791722 + Money: 7bf4b32f795e1eb867c2fcebaaf90b3249824438 Result: dc390d0b58f9ec43fcd536f1ebdd130803cc6cbc SwiftyJSON: 592b53bee5ef3dd9b3bebc6b9cb7ee35426ae8c3 ValueCoding: 54486fde2d7b1c2f1eb46de260b95340abed5bde diff --git a/Examples/Custom Money/Pods/Pods.xcodeproj/project.pbxproj b/Examples/Custom Money/Pods/Pods.xcodeproj/project.pbxproj index 67ac2f7..0336630 100644 --- a/Examples/Custom Money/Pods/Pods.xcodeproj/project.pbxproj +++ b/Examples/Custom Money/Pods/Pods.xcodeproj/project.pbxproj @@ -7,198 +7,200 @@ objects = { /* Begin PBXBuildFile section */ - 0217EDAB41BE6D83A68B4A2339BBA762 /* Money-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 91C4C71A43800346A8BACEA8E5B05DA5 /* Money-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 01CDC2329E573772C61437C6D9E424C6 /* ValueCoding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C29D8E4CA9E4CF9452CBCB9F8D56071 /* ValueCoding.framework */; }; + 043D5BD57A25AE71536828CA8DA7FF01 /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1E9BC048FABEEEF99AB0BC46166AAC88 /* Autogenerated.swift */; }; + 050CCBF1EA6669EBB882EA43B6519150 /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4299D0CBF7A4E89A05E352987824427 /* DecimalNumberType.swift */; }; + 071010808041919584FA4C48CF0EDDF8 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCB9149D7C1AAA968AE461BDB9D1EEE8 /* Result.swift */; }; 09F8C9409DF28C51561C0D4BCBDB7426 /* Pods-Custom Money-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D3CEE659D9C1D3DEA521E896D331964 /* Pods-Custom Money-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 16CC6804DA661658124C44577F2953E4 /* SwiftyJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E2CDFCF407B3970A3F2FD3C19CCA4CE7 /* SwiftyJSON-dummy.m */; }; - 1F6A8EBF7DF1DD625F8CCDB7AED2F528 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = 196613FD4A9A760DD899B3999B10DE39 /* Currency.swift */; }; - 31E645E979F3A5B089FCD8DEC7A3536E /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1FC653D131B20022B75023F33F250B9 /* Result.framework */; }; + 102C7228A7DBF85C365042333B510AAD /* SwiftyJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0216247E5703DEFCB395822BEDEDB978 /* SwiftyJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 159F21B1178289B764BCD3FE003A0885 /* Result.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D1FC653D131B20022B75023F33F250B9 /* Result.framework */; }; + 18B920DEB8C03D96876FED863C3F067D /* ValueCoding-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E95FBF4C047EA6401BB7B12E42A8B7 /* ValueCoding-dummy.m */; }; + 1BE369EA4E4AA3AC22FFEA752BAFE11A /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B22516CBC90CD5563F339D7D2D36CEB /* NSDecimalExtensions.swift */; }; + 3486EA9DA434ABCFB425595607F7CF60 /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA0150BA63C11CE658A19419D5BA0242 /* Decimal.swift */; }; 35575A63DB40EB8EC8BFD8189093A5DB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; - 435ED888CA386BA222E288B1CC8574F5 /* Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCB9149D7C1AAA968AE461BDB9D1EEE8 /* Result.swift */; }; + 36E93D1BBF5A6FCF286387141DD6A1A3 /* Currency.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAC6FFF0A1B09876AD5FBF28732DEEF9 /* Currency.swift */; }; + 36F55053B0603A0FFDE8B95F9C0DE60D /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98BFC35404280D2F4A945B4AB90E6A32 /* Bitcoin.swift */; }; + 39CBED50C7B06A334792D15FB072BAF2 /* Result-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F158272DDE3E68231F6FE2A3DEB56C4E /* Result-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 454630A1C320EC2DB1FF6E8757BFAB9D /* Result-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F2976F6779F80CE007235A83876CE7 /* Result-dummy.m */; }; + 46076C520F75FE0CC485879CA5FA01A4 /* ValueCoding-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E593BAC0D422045A94607A9C0A277E /* ValueCoding-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 46B661B9D41457BFE21F2618E7CCC4E0 /* Pods-Custom Money-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 9600516FB0E389F99DD6A409A89CA451 /* Pods-Custom Money-dummy.m */; }; - 479158A06CDB3BB92C679F966E9D9E9E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; - 4C88E376338108DCA576487003CFC800 /* Yahoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28A4E605F118FDFF037ACD0C2F7FA3CD /* Yahoo.swift */; }; - 4F31C9D988EDAA919718FC3BD4CDD785 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; - 4F45ED652CD2AAFDE8AEE11F158045B5 /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5EEF7A612BFA3D083C868A79762FB39 /* Money.swift */; }; - 554CF5A8F13DEE08C7DB61AF96C42E2A /* Result-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F158272DDE3E68231F6FE2A3DEB56C4E /* Result-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5637E947D3756585ECF976E01D38CC8A /* SwiftyJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31FCA3CC32B1FFB7E577A3FD7C8BDC8 /* SwiftyJSON.swift */; }; - 685E5FA73478973B4D2184A91E4E7FF8 /* NSDecimalExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 597CFBA87C75BE144B401FCC1EC5C927 /* NSDecimalExtensions.swift */; }; - 7E586FC96883817FC458B25FA91BD2CE /* Bitcoin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87218D77D4395E00D6D9170F8AFF291B /* Bitcoin.swift */; }; - 7FAE343617CB65AE9CB6BF5CFE4F1134 /* FX.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFF73AD3A7CF0FBE9BC94AEAC37858DD /* FX.swift */; }; - 80810DBE1DF76ECAAABA97CC92B7FC97 /* ValueCoding-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 65E593BAC0D422045A94607A9C0A277E /* ValueCoding-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 84964756F22AEE07130A328DC0143EFA /* ResultType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F003A917BF6D1C4FBA4D94B06C30179 /* ResultType.swift */; }; - 84E7501479AACC41E67BB26817D9639D /* Autogenerated.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8EEB490E417287676508AF49225E2B9 /* Autogenerated.swift */; }; - 8752AAACF89C0D05BAFAC976E18B43B5 /* OpenExchangeRates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 838F4AEA7BF1F57F0BE06B347D822D97 /* OpenExchangeRates.swift */; }; - 92290889D67198C19057765E18109214 /* ValueCoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5BC5B78EBB608AE95556AC64F2F724 /* ValueCoding.swift */; }; - A235DAAECF32771AAA2A866446349A80 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; - ADF9BB52327C5FFC7A934CDA0EE843D9 /* ValueCoding-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B5E95FBF4C047EA6401BB7B12E42A8B7 /* ValueCoding-dummy.m */; }; - B97D98FFAAA3C8A163AFDA70C5AAF75C /* SwiftyJSON-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0216247E5703DEFCB395822BEDEDB978 /* SwiftyJSON-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BFD28C75A55F161255F8F1C263D779F7 /* Money-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B01F2F57312E8852B8AAE2F384F620E /* Money-dummy.m */; }; - C664644B24E321B0A4A8568F929E69D8 /* ValueCoding.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C29D8E4CA9E4CF9452CBCB9F8D56071 /* ValueCoding.framework */; }; - CD10415D334D475BA55049F7F5027125 /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6555ECBB6D5CDDE1EA197618BD3509AD /* Support.swift */; }; - ECB837E114BC2BC4BBE280CE6CAE9BF4 /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 212F2F7938CA183DECE52229884F8877 /* NSDecimalNumberExtensions.swift */; }; - EDA2FDCE4DBBD0C20B3C52525812F335 /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77FD247247D6D3CDBF638A9DB0EBDB4E /* SwiftyJSON.framework */; }; - F0A058EFFE6ECEE169C2B53704C78963 /* Decimal.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D811F4EED15D28415AF31F21F637295 /* Decimal.swift */; }; - F485847EBE24151C05EE62DCE7204EAF /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; - F796D5F5B55CE16B1311C41299E86D0B /* Result-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D8F2976F6779F80CE007235A83876CE7 /* Result-dummy.m */; }; - F896F74FA7879D4F61DB699A27BF844D /* DecimalNumberType.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6E8271D7B956774CA6CD37674C3999C /* DecimalNumberType.swift */; }; + 4EBC5C5FE22229EDD33BDED9F754F600 /* FX.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D643686085217B859B62EB64AE65079 /* FX.swift */; }; + 57E91E64CD037A256E4699E0CA7F175D /* NSDecimalNumberExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F606D7587EF018F692AD17993DB7FC2 /* NSDecimalNumberExtensions.swift */; }; + 6970AE86E02D00EF04C76F2BFE64FC8E /* ResultType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F003A917BF6D1C4FBA4D94B06C30179 /* ResultType.swift */; }; + 7F9E59EE6FF0200ACA36025629303B3A /* OpenExchangeRates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2688CBE6732BE29EFC1AB90D9C90FB7C /* OpenExchangeRates.swift */; }; + 9A7EF57674C8EC22B7D65268D0A4DE03 /* Money-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C22C68F5162837507ABB2E5CBA7243A /* Money-dummy.m */; }; + 9C6A17DF519A656ED0784EE10CC4CB6E /* Money.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4D79982E052F868FEAD4C6B411A43AD /* Money.swift */; }; + 9F788DE02454F4895B117B1FA84DEA91 /* Money-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 8689B0915191F6FC3B6A0628A6CB5D71 /* Money-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A7F546F1578C13FC4E669EA84D9A143A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; + B0A5F205F967B27C6FDF03220B3634BB /* ValueCoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED5BC5B78EBB608AE95556AC64F2F724 /* ValueCoding.swift */; }; + B689C6A1DE32D8E2CBC8204AC806B3B4 /* Yahoo.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1F3AC336A2B14A1E454CFA3053A3446 /* Yahoo.swift */; }; + CA78A8D38649B0911E61216F1024421C /* SwiftyJSON.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77FD247247D6D3CDBF638A9DB0EBDB4E /* SwiftyJSON.framework */; }; + CB3F617203CDA93497D7B57E9CA36531 /* ApplePay.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7DED3DF92386E03A6F560446322575E /* ApplePay.swift */; }; + CC5136509641EA8530A96E91EA4EE142 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; + CF0D7CC11E07DB9E560288780B090008 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; + D068F9F5C541D23AAC5A8A8326B0E0EA /* SwiftyJSON.swift in Sources */ = {isa = PBXBuildFile; fileRef = C31FCA3CC32B1FFB7E577A3FD7C8BDC8 /* SwiftyJSON.swift */; }; + E3BCFF79F7FA73444656346BFE183DFB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */; }; + E44DAE377F46DED2E5F35ECCF2B20382 /* SwiftyJSON-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E2CDFCF407B3970A3F2FD3C19CCA4CE7 /* SwiftyJSON-dummy.m */; }; + EDA7178EE56DA34D5AC145BE581FD88C /* Support.swift in Sources */ = {isa = PBXBuildFile; fileRef = 421293E5BE5A4D53D3EFD8B0D85E6C5A /* Support.swift */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 1DFE2A02B5C6BDFE88F8CA3DFB0FC286 /* PBXContainerItemProxy */ = { + 016D73A97AF1E88DAC05D1442CBF12BD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = DCEA67B24DDEA58F2608D2A7E29EC0AE; - remoteInfo = Money; + remoteGlobalIDString = 4BC85735EDC74D4318B525FA45559B2F; + remoteInfo = ValueCoding; }; - 20E2555ABC7481F293A5C37138092ED3 /* PBXContainerItemProxy */ = { + 1DFE2A02B5C6BDFE88F8CA3DFB0FC286 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 335D5C3164D7294DB478331EF58A0C4F; - remoteInfo = Result; + remoteGlobalIDString = 1CC232158DD850F851750D630A1619A0; + remoteInfo = Money; }; - 36023380F037B6AB8D4492DCA3A27CD5 /* PBXContainerItemProxy */ = { + 2E4D0664D7A4441731CDD1F17F0A0717 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = E1BC6514E856EA889BE33605FA7C661A; + remoteGlobalIDString = 8E3382292E423E66A74FE3955E9E2C56; remoteInfo = SwiftyJSON; }; - 39651D11DAC97EA2B23D906D0DE433D1 /* PBXContainerItemProxy */ = { + 36023380F037B6AB8D4492DCA3A27CD5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 5112C7EBB0119AC3BA1E726F52B37099; - remoteInfo = ValueCoding; + remoteGlobalIDString = 8E3382292E423E66A74FE3955E9E2C56; + remoteInfo = SwiftyJSON; }; 41F272EA7F75CA2CEBC8E35579A501C9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 335D5C3164D7294DB478331EF58A0C4F; + remoteGlobalIDString = 23A7293FBB783111F02B04F92721B69F; remoteInfo = Result; }; - 5C0A58B226E00A3E1A7328A37E81607F /* PBXContainerItemProxy */ = { + A8D7D5C5D4B2B0DBEA7CD9A1C6CA1131 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = E1BC6514E856EA889BE33605FA7C661A; - remoteInfo = SwiftyJSON; + remoteGlobalIDString = 4BC85735EDC74D4318B525FA45559B2F; + remoteInfo = ValueCoding; }; - A8D7D5C5D4B2B0DBEA7CD9A1C6CA1131 /* PBXContainerItemProxy */ = { + C2A1695E336A6C2B91B965F6F79808BC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = D41D8CD98F00B204E9800998ECF8427E /* Project object */; proxyType = 1; - remoteGlobalIDString = 5112C7EBB0119AC3BA1E726F52B37099; - remoteInfo = ValueCoding; + remoteGlobalIDString = 23A7293FBB783111F02B04F92721B69F; + remoteInfo = Result; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ 0216247E5703DEFCB395822BEDEDB978 /* SwiftyJSON-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-umbrella.h"; sourceTree = ""; }; + 0B22516CBC90CD5563F339D7D2D36CEB /* NSDecimalExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NSDecimalExtensions.swift; sourceTree = ""; }; 0DA8BD07E1098E205AF45D501594137C /* Result.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Result.modulemap; sourceTree = ""; }; - 196613FD4A9A760DD899B3999B10DE39 /* Currency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Currency.swift; sourceTree = ""; }; 1DADDD5C59FCA27235ACA32605BD1527 /* SwiftyJSON-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SwiftyJSON-prefix.pch"; sourceTree = ""; }; - 212F2F7938CA183DECE52229884F8877 /* NSDecimalNumberExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NSDecimalNumberExtensions.swift; sourceTree = ""; }; + 1E9BC048FABEEEF99AB0BC46166AAC88 /* Autogenerated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Autogenerated.swift; sourceTree = ""; }; + 2688CBE6732BE29EFC1AB90D9C90FB7C /* OpenExchangeRates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OpenExchangeRates.swift; sourceTree = ""; }; 269178DAB03BE95581C9933E5AD7BA5E /* Result.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Result.xcconfig; sourceTree = ""; }; - 28A4E605F118FDFF037ACD0C2F7FA3CD /* Yahoo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Yahoo.swift; sourceTree = ""; }; + 2F606D7587EF018F692AD17993DB7FC2 /* NSDecimalNumberExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NSDecimalNumberExtensions.swift; sourceTree = ""; }; + 3946E597A9D0AC3D75CAFD24BDAFD80E /* Money-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Money-prefix.pch"; sourceTree = ""; }; 3D3CEE659D9C1D3DEA521E896D331964 /* Pods-Custom Money-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Custom Money-umbrella.h"; sourceTree = ""; }; 3D699C1DA947CA5DBF82BE8927112AC0 /* ValueCoding.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = ValueCoding.modulemap; sourceTree = ""; }; 3F972EB6AED7000E61962C751DD7165D /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - 4AB0701B627076DB30830590329556A7 /* Money.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Money.modulemap; sourceTree = ""; }; - 4B01F2F57312E8852B8AAE2F384F620E /* Money-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Money-dummy.m"; sourceTree = ""; }; + 421293E5BE5A4D53D3EFD8B0D85E6C5A /* Support.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Support.swift; sourceTree = ""; }; 4C1460F12F695C031F6228E5D1C63C9F /* SwiftyJSON.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SwiftyJSON.xcconfig; sourceTree = ""; }; 4F003A917BF6D1C4FBA4D94B06C30179 /* ResultType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ResultType.swift; path = Result/ResultType.swift; sourceTree = ""; }; 50DFB978AB699248C726E034F1B3B42F /* ValueCoding.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ValueCoding.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 597CFBA87C75BE144B401FCC1EC5C927 /* NSDecimalExtensions.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = NSDecimalExtensions.swift; sourceTree = ""; }; 5C29D8E4CA9E4CF9452CBCB9F8D56071 /* ValueCoding.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ValueCoding.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 6555ECBB6D5CDDE1EA197618BD3509AD /* Support.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Support.swift; sourceTree = ""; }; 65E593BAC0D422045A94607A9C0A277E /* ValueCoding-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ValueCoding-umbrella.h"; sourceTree = ""; }; + 6668142B4A7F7A5DE42435220C510B8F /* Money.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Money.xcconfig; sourceTree = ""; }; + 6C22C68F5162837507ABB2E5CBA7243A /* Money-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Money-dummy.m"; sourceTree = ""; }; 71224125016483CBA4B84EA93DFD15CB /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 7493F7F104BA60971A5E0230D9A9DAFC /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 765CD792203F037EA7D0D97B135C395A /* ValueCoding.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ValueCoding.xcconfig; sourceTree = ""; }; 77FD247247D6D3CDBF638A9DB0EBDB4E /* SwiftyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 7D56F281EDF6E7A4ED5627141F4E4DA2 /* Pods_Custom_Money.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Custom_Money.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 838F4AEA7BF1F57F0BE06B347D822D97 /* OpenExchangeRates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = OpenExchangeRates.swift; sourceTree = ""; }; - 87218D77D4395E00D6D9170F8AFF291B /* Bitcoin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Bitcoin.swift; sourceTree = ""; }; + 83480F8F94E599798D9FFD36B467F76C /* Money.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = Money.modulemap; sourceTree = ""; }; + 8689B0915191F6FC3B6A0628A6CB5D71 /* Money-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Money-umbrella.h"; sourceTree = ""; }; 8912AF1B024C1949E8DB3ECC403C4AE2 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS9.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 8D811F4EED15D28415AF31F21F637295 /* Decimal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Decimal.swift; sourceTree = ""; }; - 91C4C71A43800346A8BACEA8E5B05DA5 /* Money-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Money-umbrella.h"; sourceTree = ""; }; + 8D643686085217B859B62EB64AE65079 /* FX.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FX.swift; sourceTree = ""; }; 94291E74B2ABBA056AD28AD1873DD8E3 /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 946FC5A04C491594712C2DB0468A8E59 /* Pods-Custom Money-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Custom Money-frameworks.sh"; sourceTree = ""; }; 9600516FB0E389F99DD6A409A89CA451 /* Pods-Custom Money-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Custom Money-dummy.m"; sourceTree = ""; }; 9678D4111A5AF8A6BB307124E11DCA92 /* Pods-Custom Money-resources.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Custom Money-resources.sh"; sourceTree = ""; }; - 9E93EF565FBC64DCCA9029202BF573DE /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 98BFC35404280D2F4A945B4AB90E6A32 /* Bitcoin.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Bitcoin.swift; sourceTree = ""; }; 9F8525B17F44112BA10D136F7F6C4089 /* ValueCoding-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ValueCoding-prefix.pch"; sourceTree = ""; }; A26E7BC45299526E4063BB4C61816580 /* Money.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Money.framework; sourceTree = BUILT_PRODUCTS_DIR; }; A6DD5137FE8F22C2424D946F7E8D8D68 /* Pods-Custom Money-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Custom Money-acknowledgements.markdown"; sourceTree = ""; }; + B1F3AC336A2B14A1E454CFA3053A3446 /* Yahoo.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Yahoo.swift; sourceTree = ""; }; + B4299D0CBF7A4E89A05E352987824427 /* DecimalNumberType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DecimalNumberType.swift; sourceTree = ""; }; B54A2AA14A7640E4A9B85F662D37A7D6 /* SwiftyJSON.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = SwiftyJSON.modulemap; sourceTree = ""; }; B5E95FBF4C047EA6401BB7B12E42A8B7 /* ValueCoding-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "ValueCoding-dummy.m"; sourceTree = ""; }; - B5EEF7A612BFA3D083C868A79762FB39 /* Money.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Money.swift; sourceTree = ""; }; - B8EEB490E417287676508AF49225E2B9 /* Autogenerated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Autogenerated.swift; sourceTree = ""; }; + B7DED3DF92386E03A6F560446322575E /* ApplePay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = ApplePay.swift; sourceTree = ""; }; BA6428E9F66FD5A23C0A2E06ED26CD2F /* Podfile */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; C31FCA3CC32B1FFB7E577A3FD7C8BDC8 /* SwiftyJSON.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SwiftyJSON.swift; path = Source/SwiftyJSON.swift; sourceTree = ""; }; C3461681C9E35896A154A3D8722352D1 /* Pods-Custom Money-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Custom Money-acknowledgements.plist"; sourceTree = ""; }; - C4B98152CC246208D533CBEB9CD23E8C /* Money-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Money-prefix.pch"; sourceTree = ""; }; + C4D79982E052F868FEAD4C6B411A43AD /* Money.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Money.swift; sourceTree = ""; }; C6AD9E331A620215773EDAE3D38920CB /* Pods-Custom Money.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Custom Money.release.xcconfig"; sourceTree = ""; }; - C6E8271D7B956774CA6CD37674C3999C /* DecimalNumberType.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = DecimalNumberType.swift; sourceTree = ""; }; + CA0150BA63C11CE658A19419D5BA0242 /* Decimal.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Decimal.swift; sourceTree = ""; }; CCB9149D7C1AAA968AE461BDB9D1EEE8 /* Result.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Result.swift; path = Result/Result.swift; sourceTree = ""; }; - D0F97F33A29F47BC32D7EBD2E18FAB2D /* Money.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Money.xcconfig; sourceTree = ""; }; D1FC653D131B20022B75023F33F250B9 /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D3F2B752C29D13FEC643AB1DFAD68B3E /* Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; D5181C8B9D1105F7243EBF4BDFDA56F8 /* Result-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-prefix.pch"; sourceTree = ""; }; D619B7641BF35CCD0B69F64DE1F3B98A /* Result.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Result.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D8F2976F6779F80CE007235A83876CE7 /* Result-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Result-dummy.m"; sourceTree = ""; }; + DAC6FFF0A1B09876AD5FBF28732DEEF9 /* Currency.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = Currency.swift; sourceTree = ""; }; DC0E8FE128B75E4AF4C971D16E94076E /* SwiftyJSON.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SwiftyJSON.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DF6284F39323D79B75BEEB8C366DE87C /* Pods-Custom Money.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Custom Money.debug.xcconfig"; sourceTree = ""; }; E2CDFCF407B3970A3F2FD3C19CCA4CE7 /* SwiftyJSON-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SwiftyJSON-dummy.m"; sourceTree = ""; }; ED5BC5B78EBB608AE95556AC64F2F724 /* ValueCoding.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ValueCoding.swift; path = ValueCoding/ValueCoding.swift; sourceTree = ""; }; - EFF73AD3A7CF0FBE9BC94AEAC37858DD /* FX.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = FX.swift; sourceTree = ""; }; F158272DDE3E68231F6FE2A3DEB56C4E /* Result-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Result-umbrella.h"; sourceTree = ""; }; F50C4C662DD8A2616FF07C3827D2AAC0 /* Pods-Custom Money.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "sourcecode.module-map"; path = "Pods-Custom Money.modulemap"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 063817B9347F8D64E119A7E71C814B32 /* Frameworks */ = { + 1C6CB977C8427C2DD9292CCC7B862340 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - A235DAAECF32771AAA2A866446349A80 /* Foundation.framework in Frameworks */, + CC5136509641EA8530A96E91EA4EE142 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 2E34BE03E627006D15ADEA6C163BA5D0 /* Frameworks */ = { + 4716E670998219B6B6EB4A7AB3211D1C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - F485847EBE24151C05EE62DCE7204EAF /* Foundation.framework in Frameworks */, + 35575A63DB40EB8EC8BFD8189093A5DB /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - 4716E670998219B6B6EB4A7AB3211D1C /* Frameworks */ = { + 4E63CDC2DF3B55480B8EB8C922BC8D2C /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 35575A63DB40EB8EC8BFD8189093A5DB /* Foundation.framework in Frameworks */, + E3BCFF79F7FA73444656346BFE183DFB /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - A973EBD95D75EA357A1572FC46D8517C /* Frameworks */ = { + 7928477D0E27DA94424A3FF372E41D05 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 4F31C9D988EDAA919718FC3BD4CDD785 /* Foundation.framework in Frameworks */, - 31E645E979F3A5B089FCD8DEC7A3536E /* Result.framework in Frameworks */, - EDA2FDCE4DBBD0C20B3C52525812F335 /* SwiftyJSON.framework in Frameworks */, - C664644B24E321B0A4A8568F929E69D8 /* ValueCoding.framework in Frameworks */, + A7F546F1578C13FC4E669EA84D9A143A /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - EA5D97503478433CA914EEEB041FB4A0 /* Frameworks */ = { + D33B3238A09F0DE15B806E36D744545D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 479158A06CDB3BB92C679F966E9D9E9E /* Foundation.framework in Frameworks */, + CF0D7CC11E07DB9E560288780B090008 /* Foundation.framework in Frameworks */, + 159F21B1178289B764BCD3FE003A0885 /* Result.framework in Frameworks */, + CA78A8D38649B0911E61216F1024421C /* SwiftyJSON.framework in Frameworks */, + 01CDC2329E573772C61437C6D9E424C6 /* ValueCoding.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -242,38 +244,17 @@ name = Pods; sourceTree = ""; }; - 5CEE22C08342643D21F896926A007B93 /* Money */ = { + 7C19DCF690047371AAE3833667886182 /* FX */ = { isa = PBXGroup; children = ( - 8AA0F47E58ABAF246515E19B4535F66B /* Money */, - 88ECEAF82072CCAC7F028BBF483E773D /* Support Files */, - ); - name = Money; - path = ../../..; - sourceTree = ""; - }; - 6C7887F173D1B299B79CDAABD19D2704 /* FX */ = { - isa = PBXGroup; - children = ( - 87218D77D4395E00D6D9170F8AFF291B /* Bitcoin.swift */, - EFF73AD3A7CF0FBE9BC94AEAC37858DD /* FX.swift */, - 838F4AEA7BF1F57F0BE06B347D822D97 /* OpenExchangeRates.swift */, - 28A4E605F118FDFF037ACD0C2F7FA3CD /* Yahoo.swift */, + 98BFC35404280D2F4A945B4AB90E6A32 /* Bitcoin.swift */, + 8D643686085217B859B62EB64AE65079 /* FX.swift */, + 2688CBE6732BE29EFC1AB90D9C90FB7C /* OpenExchangeRates.swift */, + B1F3AC336A2B14A1E454CFA3053A3446 /* Yahoo.swift */, ); path = FX; sourceTree = ""; }; - 7B3DE46407420792449B7AADF7768E63 /* Decimal */ = { - isa = PBXGroup; - children = ( - 8D811F4EED15D28415AF31F21F637295 /* Decimal.swift */, - C6E8271D7B956774CA6CD37674C3999C /* DecimalNumberType.swift */, - 597CFBA87C75BE144B401FCC1EC5C927 /* NSDecimalExtensions.swift */, - 212F2F7938CA183DECE52229884F8877 /* NSDecimalNumberExtensions.swift */, - ); - path = Decimal; - sourceTree = ""; - }; 7CD8DE1FA9C24B39D42EAA6BE52E7E30 /* Products */ = { isa = PBXGroup; children = ( @@ -326,33 +307,49 @@ path = "../Target Support Files/ValueCoding"; sourceTree = ""; }; - 88ECEAF82072CCAC7F028BBF483E773D /* Support Files */ = { + 8EECE84127C724CBF2DA747FDAD1ECBE /* Money */ = { isa = PBXGroup; children = ( - 9E93EF565FBC64DCCA9029202BF573DE /* Info.plist */, - 4AB0701B627076DB30830590329556A7 /* Money.modulemap */, - D0F97F33A29F47BC32D7EBD2E18FAB2D /* Money.xcconfig */, - 4B01F2F57312E8852B8AAE2F384F620E /* Money-dummy.m */, - C4B98152CC246208D533CBEB9CD23E8C /* Money-prefix.pch */, - 91C4C71A43800346A8BACEA8E5B05DA5 /* Money-umbrella.h */, + A596F2F01D5F21C44F61508BED008A83 /* Money */, + EAA430956243F34196DE176B903AA873 /* Support Files */, ); - name = "Support Files"; - path = "Examples/Custom Money/Pods/Target Support Files/Money"; + name = Money; + path = ../../..; sourceTree = ""; }; - 8AA0F47E58ABAF246515E19B4535F66B /* Money */ = { + 9D6C6B5B1D50EA6E1644D2E408D8EDE5 /* Decimal */ = { isa = PBXGroup; children = ( - B8EEB490E417287676508AF49225E2B9 /* Autogenerated.swift */, - 196613FD4A9A760DD899B3999B10DE39 /* Currency.swift */, - B5EEF7A612BFA3D083C868A79762FB39 /* Money.swift */, - 6555ECBB6D5CDDE1EA197618BD3509AD /* Support.swift */, - 7B3DE46407420792449B7AADF7768E63 /* Decimal */, - 6C7887F173D1B299B79CDAABD19D2704 /* FX */, + CA0150BA63C11CE658A19419D5BA0242 /* Decimal.swift */, + B4299D0CBF7A4E89A05E352987824427 /* DecimalNumberType.swift */, + 0B22516CBC90CD5563F339D7D2D36CEB /* NSDecimalExtensions.swift */, + 2F606D7587EF018F692AD17993DB7FC2 /* NSDecimalNumberExtensions.swift */, + ); + path = Decimal; + sourceTree = ""; + }; + A596F2F01D5F21C44F61508BED008A83 /* Money */ = { + isa = PBXGroup; + children = ( + DB2700AD42E15CFDDE436C7EF1151C17 /* iOS */, + B33EF8AC085A9FA1394A0362E8A499C8 /* Shared */, ); path = Money; sourceTree = ""; }; + B33EF8AC085A9FA1394A0362E8A499C8 /* Shared */ = { + isa = PBXGroup; + children = ( + 1E9BC048FABEEEF99AB0BC46166AAC88 /* Autogenerated.swift */, + DAC6FFF0A1B09876AD5FBF28732DEEF9 /* Currency.swift */, + C4D79982E052F868FEAD4C6B411A43AD /* Money.swift */, + 421293E5BE5A4D53D3EFD8B0D85E6C5A /* Support.swift */, + 9D6C6B5B1D50EA6E1644D2E408D8EDE5 /* Decimal */, + 7C19DCF690047371AAE3833667886182 /* FX */, + ); + path = Shared; + sourceTree = ""; + }; B5C0E67CF8FBCF29AA3D76C4CEADF315 /* Result */ = { isa = PBXGroup; children = ( @@ -377,7 +374,7 @@ CAC5A6648E74B35CD2E9377F99CF2FF6 /* Development Pods */ = { isa = PBXGroup; children = ( - 5CEE22C08342643D21F896926A007B93 /* Money */, + 8EECE84127C724CBF2DA747FDAD1ECBE /* Money */, ); name = "Development Pods"; sourceTree = ""; @@ -398,6 +395,28 @@ name = iOS; sourceTree = ""; }; + DB2700AD42E15CFDDE436C7EF1151C17 /* iOS */ = { + isa = PBXGroup; + children = ( + B7DED3DF92386E03A6F560446322575E /* ApplePay.swift */, + ); + path = iOS; + sourceTree = ""; + }; + EAA430956243F34196DE176B903AA873 /* Support Files */ = { + isa = PBXGroup; + children = ( + 7493F7F104BA60971A5E0230D9A9DAFC /* Info.plist */, + 83480F8F94E599798D9FFD36B467F76C /* Money.modulemap */, + 6668142B4A7F7A5DE42435220C510B8F /* Money.xcconfig */, + 6C22C68F5162837507ABB2E5CBA7243A /* Money-dummy.m */, + 3946E597A9D0AC3D75CAFD24BDAFD80E /* Money-prefix.pch */, + 8689B0915191F6FC3B6A0628A6CB5D71 /* Money-umbrella.h */, + ); + name = "Support Files"; + path = "Examples/Custom Money/Pods/Target Support Files/Money"; + sourceTree = ""; + }; ED084EEB9ACE805519B38840A5FB08F9 /* SwiftyJSON */ = { isa = PBXGroup; children = ( @@ -424,139 +443,139 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 121AD303FE4E01089C531A97FD809397 /* Headers */ = { + 0FEE4C6970CF21141A8C84FDD7AD1C3C /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - B97D98FFAAA3C8A163AFDA70C5AAF75C /* SwiftyJSON-umbrella.h in Headers */, + 102C7228A7DBF85C365042333B510AAD /* SwiftyJSON-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 22E1441E18750994A84E7B0403907CBC /* Headers */ = { + 2EA34AA3BAC054D6E4642611EA11CCAC /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 80810DBE1DF76ECAAABA97CC92B7FC97 /* ValueCoding-umbrella.h in Headers */, + 39CBED50C7B06A334792D15FB072BAF2 /* Result-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 76EC7561AE8C1FCEC260E5BA53821228 /* Headers */ = { + 8269C693AE9B0FAA04EE2300F9720E28 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 554CF5A8F13DEE08C7DB61AF96C42E2A /* Result-umbrella.h in Headers */, + 09F8C9409DF28C51561C0D4BCBDB7426 /* Pods-Custom Money-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 77C659239C7FD869381366BA007B3567 /* Headers */ = { + 916A431FAF311C9A7FBBD1E61307F9A5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 0217EDAB41BE6D83A68B4A2339BBA762 /* Money-umbrella.h in Headers */, + 46076C520F75FE0CC485879CA5FA01A4 /* ValueCoding-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8269C693AE9B0FAA04EE2300F9720E28 /* Headers */ = { + BB19B4B2D4F1CA7B3070B06759A30DA5 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 09F8C9409DF28C51561C0D4BCBDB7426 /* Pods-Custom Money-umbrella.h in Headers */, + 9F788DE02454F4895B117B1FA84DEA91 /* Money-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ - 335D5C3164D7294DB478331EF58A0C4F /* Result */ = { + 1CC232158DD850F851750D630A1619A0 /* Money */ = { isa = PBXNativeTarget; - buildConfigurationList = 81F73A5B96E10FC3CD393C5AF6B23B20 /* Build configuration list for PBXNativeTarget "Result" */; + buildConfigurationList = 1388689AACE2A14DA17A521B69C583E6 /* Build configuration list for PBXNativeTarget "Money" */; buildPhases = ( - 5B6AFD100B8B127EAAA9008096C2259C /* Sources */, - 2E34BE03E627006D15ADEA6C163BA5D0 /* Frameworks */, - 76EC7561AE8C1FCEC260E5BA53821228 /* Headers */, + 2099C4B3B11A468234DE1E5073510688 /* Sources */, + D33B3238A09F0DE15B806E36D744545D /* Frameworks */, + BB19B4B2D4F1CA7B3070B06759A30DA5 /* Headers */, ); buildRules = ( ); dependencies = ( + 32935F77C460566C83EE30C50809F2F8 /* PBXTargetDependency */, + 7D4CA1F5E100235C4ED1197E6395406F /* PBXTargetDependency */, + D07CE80CD02E5C531AEAA644FC59C0B5 /* PBXTargetDependency */, ); - name = Result; - productName = Result; - productReference = D619B7641BF35CCD0B69F64DE1F3B98A /* Result.framework */; + name = Money; + productName = Money; + productReference = A26E7BC45299526E4063BB4C61816580 /* Money.framework */; productType = "com.apple.product-type.framework"; }; - 5112C7EBB0119AC3BA1E726F52B37099 /* ValueCoding */ = { + 23A7293FBB783111F02B04F92721B69F /* Result */ = { isa = PBXNativeTarget; - buildConfigurationList = 2F3A813139924F1A5E5B2011370475B6 /* Build configuration list for PBXNativeTarget "ValueCoding" */; + buildConfigurationList = 081A3E84FFCCA0D120DA040D7C0642BB /* Build configuration list for PBXNativeTarget "Result" */; buildPhases = ( - FC98ED70CA8B7B1AB9B1B0C865B55999 /* Sources */, - 063817B9347F8D64E119A7E71C814B32 /* Frameworks */, - 22E1441E18750994A84E7B0403907CBC /* Headers */, + D12A0EA6A0161FF6E494EB4EA0A5D7AF /* Sources */, + 1C6CB977C8427C2DD9292CCC7B862340 /* Frameworks */, + 2EA34AA3BAC054D6E4642611EA11CCAC /* Headers */, ); buildRules = ( ); dependencies = ( ); - name = ValueCoding; - productName = ValueCoding; - productReference = 50DFB978AB699248C726E034F1B3B42F /* ValueCoding.framework */; + name = Result; + productName = Result; + productReference = D619B7641BF35CCD0B69F64DE1F3B98A /* Result.framework */; productType = "com.apple.product-type.framework"; }; - B63DBF20C97F25D4F844CB4BDFE4527A /* Pods-Custom Money */ = { + 4BC85735EDC74D4318B525FA45559B2F /* ValueCoding */ = { isa = PBXNativeTarget; - buildConfigurationList = 37A41A6B9185E59239BFB81D6353E1CF /* Build configuration list for PBXNativeTarget "Pods-Custom Money" */; + buildConfigurationList = 4323EA468273039AAF7A09F78393BBD8 /* Build configuration list for PBXNativeTarget "ValueCoding" */; buildPhases = ( - 9939AE9FAD1EEC366F8358A7D92606F6 /* Sources */, - 4716E670998219B6B6EB4A7AB3211D1C /* Frameworks */, - 8269C693AE9B0FAA04EE2300F9720E28 /* Headers */, + E2CDC2BAEBF7D5294E87D15A8B9B6484 /* Sources */, + 7928477D0E27DA94424A3FF372E41D05 /* Frameworks */, + 916A431FAF311C9A7FBBD1E61307F9A5 /* Headers */, ); buildRules = ( ); dependencies = ( - 6A5AB7BA465846DD13A7288647AE3D64 /* PBXTargetDependency */, - 5296D6953C077C85AFCB563124192C7D /* PBXTargetDependency */, - 14EE644027DDF28E4652404B99E3BE47 /* PBXTargetDependency */, - DBB46D880EEEB766A474B6074D4B98DF /* PBXTargetDependency */, ); - name = "Pods-Custom Money"; - productName = "Pods-Custom Money"; - productReference = 7D56F281EDF6E7A4ED5627141F4E4DA2 /* Pods_Custom_Money.framework */; + name = ValueCoding; + productName = ValueCoding; + productReference = 50DFB978AB699248C726E034F1B3B42F /* ValueCoding.framework */; productType = "com.apple.product-type.framework"; }; - DCEA67B24DDEA58F2608D2A7E29EC0AE /* Money */ = { + 8E3382292E423E66A74FE3955E9E2C56 /* SwiftyJSON */ = { isa = PBXNativeTarget; - buildConfigurationList = 5CADF911B07C597448EFF422ABDB3FDE /* Build configuration list for PBXNativeTarget "Money" */; + buildConfigurationList = 4D982EA60D3570F60FB04AE8CC7B8895 /* Build configuration list for PBXNativeTarget "SwiftyJSON" */; buildPhases = ( - C8934663EB4AE0B4929444533C9EF220 /* Sources */, - A973EBD95D75EA357A1572FC46D8517C /* Frameworks */, - 77C659239C7FD869381366BA007B3567 /* Headers */, + 110E1CABA46BB17D6EFDE17FD449ACE3 /* Sources */, + 4E63CDC2DF3B55480B8EB8C922BC8D2C /* Frameworks */, + 0FEE4C6970CF21141A8C84FDD7AD1C3C /* Headers */, ); buildRules = ( ); dependencies = ( - C8DCBE089958260D159D5C44647F41CF /* PBXTargetDependency */, - D407F2C774D39C8178BBAB3740391322 /* PBXTargetDependency */, - D89098397CC9BDCF51043D6F04F96FF9 /* PBXTargetDependency */, ); - name = Money; - productName = Money; - productReference = A26E7BC45299526E4063BB4C61816580 /* Money.framework */; + name = SwiftyJSON; + productName = SwiftyJSON; + productReference = DC0E8FE128B75E4AF4C971D16E94076E /* SwiftyJSON.framework */; productType = "com.apple.product-type.framework"; }; - E1BC6514E856EA889BE33605FA7C661A /* SwiftyJSON */ = { + B63DBF20C97F25D4F844CB4BDFE4527A /* Pods-Custom Money */ = { isa = PBXNativeTarget; - buildConfigurationList = FDDDB1E35279A6D3923344153846DF57 /* Build configuration list for PBXNativeTarget "SwiftyJSON" */; + buildConfigurationList = 37A41A6B9185E59239BFB81D6353E1CF /* Build configuration list for PBXNativeTarget "Pods-Custom Money" */; buildPhases = ( - 8928033D360B3AD2E4332DBAE9791D67 /* Sources */, - EA5D97503478433CA914EEEB041FB4A0 /* Frameworks */, - 121AD303FE4E01089C531A97FD809397 /* Headers */, + 9939AE9FAD1EEC366F8358A7D92606F6 /* Sources */, + 4716E670998219B6B6EB4A7AB3211D1C /* Frameworks */, + 8269C693AE9B0FAA04EE2300F9720E28 /* Headers */, ); buildRules = ( ); dependencies = ( + 6A5AB7BA465846DD13A7288647AE3D64 /* PBXTargetDependency */, + 5296D6953C077C85AFCB563124192C7D /* PBXTargetDependency */, + 14EE644027DDF28E4652404B99E3BE47 /* PBXTargetDependency */, + DBB46D880EEEB766A474B6074D4B98DF /* PBXTargetDependency */, ); - name = SwiftyJSON; - productName = SwiftyJSON; - productReference = DC0E8FE128B75E4AF4C971D16E94076E /* SwiftyJSON.framework */; + name = "Pods-Custom Money"; + productName = "Pods-Custom Money"; + productReference = 7D56F281EDF6E7A4ED5627141F4E4DA2 /* Pods_Custom_Money.framework */; productType = "com.apple.product-type.framework"; }; /* End PBXNativeTarget section */ @@ -566,7 +585,7 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0700; - LastUpgradeCheck = 0700; + LastUpgradeCheck = 0710; }; buildConfigurationList = 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */; compatibilityVersion = "Xcode 3.2"; @@ -580,32 +599,43 @@ projectDirPath = ""; projectRoot = ""; targets = ( - DCEA67B24DDEA58F2608D2A7E29EC0AE /* Money */, + 1CC232158DD850F851750D630A1619A0 /* Money */, B63DBF20C97F25D4F844CB4BDFE4527A /* Pods-Custom Money */, - 335D5C3164D7294DB478331EF58A0C4F /* Result */, - E1BC6514E856EA889BE33605FA7C661A /* SwiftyJSON */, - 5112C7EBB0119AC3BA1E726F52B37099 /* ValueCoding */, + 23A7293FBB783111F02B04F92721B69F /* Result */, + 8E3382292E423E66A74FE3955E9E2C56 /* SwiftyJSON */, + 4BC85735EDC74D4318B525FA45559B2F /* ValueCoding */, ); }; /* End PBXProject section */ /* Begin PBXSourcesBuildPhase section */ - 5B6AFD100B8B127EAAA9008096C2259C /* Sources */ = { + 110E1CABA46BB17D6EFDE17FD449ACE3 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - F796D5F5B55CE16B1311C41299E86D0B /* Result-dummy.m in Sources */, - 435ED888CA386BA222E288B1CC8574F5 /* Result.swift in Sources */, - 84964756F22AEE07130A328DC0143EFA /* ResultType.swift in Sources */, + E44DAE377F46DED2E5F35ECCF2B20382 /* SwiftyJSON-dummy.m in Sources */, + D068F9F5C541D23AAC5A8A8326B0E0EA /* SwiftyJSON.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8928033D360B3AD2E4332DBAE9791D67 /* Sources */ = { + 2099C4B3B11A468234DE1E5073510688 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 16CC6804DA661658124C44577F2953E4 /* SwiftyJSON-dummy.m in Sources */, - 5637E947D3756585ECF976E01D38CC8A /* SwiftyJSON.swift in Sources */, + CB3F617203CDA93497D7B57E9CA36531 /* ApplePay.swift in Sources */, + 043D5BD57A25AE71536828CA8DA7FF01 /* Autogenerated.swift in Sources */, + 36F55053B0603A0FFDE8B95F9C0DE60D /* Bitcoin.swift in Sources */, + 36E93D1BBF5A6FCF286387141DD6A1A3 /* Currency.swift in Sources */, + 3486EA9DA434ABCFB425595607F7CF60 /* Decimal.swift in Sources */, + 050CCBF1EA6669EBB882EA43B6519150 /* DecimalNumberType.swift in Sources */, + 4EBC5C5FE22229EDD33BDED9F754F600 /* FX.swift in Sources */, + 9A7EF57674C8EC22B7D65268D0A4DE03 /* Money-dummy.m in Sources */, + 9C6A17DF519A656ED0784EE10CC4CB6E /* Money.swift in Sources */, + 1BE369EA4E4AA3AC22FFEA752BAFE11A /* NSDecimalExtensions.swift in Sources */, + 57E91E64CD037A256E4699E0CA7F175D /* NSDecimalNumberExtensions.swift in Sources */, + 7F9E59EE6FF0200ACA36025629303B3A /* OpenExchangeRates.swift in Sources */, + EDA7178EE56DA34D5AC145BE581FD88C /* Support.swift in Sources */, + B689C6A1DE32D8E2CBC8204AC806B3B4 /* Yahoo.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -617,32 +647,22 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - C8934663EB4AE0B4929444533C9EF220 /* Sources */ = { + D12A0EA6A0161FF6E494EB4EA0A5D7AF /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 84E7501479AACC41E67BB26817D9639D /* Autogenerated.swift in Sources */, - 7E586FC96883817FC458B25FA91BD2CE /* Bitcoin.swift in Sources */, - 1F6A8EBF7DF1DD625F8CCDB7AED2F528 /* Currency.swift in Sources */, - F0A058EFFE6ECEE169C2B53704C78963 /* Decimal.swift in Sources */, - F896F74FA7879D4F61DB699A27BF844D /* DecimalNumberType.swift in Sources */, - 7FAE343617CB65AE9CB6BF5CFE4F1134 /* FX.swift in Sources */, - BFD28C75A55F161255F8F1C263D779F7 /* Money-dummy.m in Sources */, - 4F45ED652CD2AAFDE8AEE11F158045B5 /* Money.swift in Sources */, - 685E5FA73478973B4D2184A91E4E7FF8 /* NSDecimalExtensions.swift in Sources */, - ECB837E114BC2BC4BBE280CE6CAE9BF4 /* NSDecimalNumberExtensions.swift in Sources */, - 8752AAACF89C0D05BAFAC976E18B43B5 /* OpenExchangeRates.swift in Sources */, - CD10415D334D475BA55049F7F5027125 /* Support.swift in Sources */, - 4C88E376338108DCA576487003CFC800 /* Yahoo.swift in Sources */, + 454630A1C320EC2DB1FF6E8757BFAB9D /* Result-dummy.m in Sources */, + 071010808041919584FA4C48CF0EDDF8 /* Result.swift in Sources */, + 6970AE86E02D00EF04C76F2BFE64FC8E /* ResultType.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - FC98ED70CA8B7B1AB9B1B0C865B55999 /* Sources */ = { + E2CDC2BAEBF7D5294E87D15A8B9B6484 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - ADF9BB52327C5FFC7A934CDA0EE843D9 /* ValueCoding-dummy.m in Sources */, - 92290889D67198C19057765E18109214 /* ValueCoding.swift in Sources */, + 18B920DEB8C03D96876FED863C3F067D /* ValueCoding-dummy.m in Sources */, + B0A5F205F967B27C6FDF03220B3634BB /* ValueCoding.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -652,48 +672,76 @@ 14EE644027DDF28E4652404B99E3BE47 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SwiftyJSON; - target = E1BC6514E856EA889BE33605FA7C661A /* SwiftyJSON */; + target = 8E3382292E423E66A74FE3955E9E2C56 /* SwiftyJSON */; targetProxy = 36023380F037B6AB8D4492DCA3A27CD5 /* PBXContainerItemProxy */; }; + 32935F77C460566C83EE30C50809F2F8 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Result; + target = 23A7293FBB783111F02B04F92721B69F /* Result */; + targetProxy = C2A1695E336A6C2B91B965F6F79808BC /* PBXContainerItemProxy */; + }; 5296D6953C077C85AFCB563124192C7D /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Result; - target = 335D5C3164D7294DB478331EF58A0C4F /* Result */; + target = 23A7293FBB783111F02B04F92721B69F /* Result */; targetProxy = 41F272EA7F75CA2CEBC8E35579A501C9 /* PBXContainerItemProxy */; }; 6A5AB7BA465846DD13A7288647AE3D64 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Money; - target = DCEA67B24DDEA58F2608D2A7E29EC0AE /* Money */; + target = 1CC232158DD850F851750D630A1619A0 /* Money */; targetProxy = 1DFE2A02B5C6BDFE88F8CA3DFB0FC286 /* PBXContainerItemProxy */; }; - C8DCBE089958260D159D5C44647F41CF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Result; - target = 335D5C3164D7294DB478331EF58A0C4F /* Result */; - targetProxy = 20E2555ABC7481F293A5C37138092ED3 /* PBXContainerItemProxy */; - }; - D407F2C774D39C8178BBAB3740391322 /* PBXTargetDependency */ = { + 7D4CA1F5E100235C4ED1197E6395406F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = SwiftyJSON; - target = E1BC6514E856EA889BE33605FA7C661A /* SwiftyJSON */; - targetProxy = 5C0A58B226E00A3E1A7328A37E81607F /* PBXContainerItemProxy */; + target = 8E3382292E423E66A74FE3955E9E2C56 /* SwiftyJSON */; + targetProxy = 2E4D0664D7A4441731CDD1F17F0A0717 /* PBXContainerItemProxy */; }; - D89098397CC9BDCF51043D6F04F96FF9 /* PBXTargetDependency */ = { + D07CE80CD02E5C531AEAA644FC59C0B5 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ValueCoding; - target = 5112C7EBB0119AC3BA1E726F52B37099 /* ValueCoding */; - targetProxy = 39651D11DAC97EA2B23D906D0DE433D1 /* PBXContainerItemProxy */; + target = 4BC85735EDC74D4318B525FA45559B2F /* ValueCoding */; + targetProxy = 016D73A97AF1E88DAC05D1442CBF12BD /* PBXContainerItemProxy */; }; DBB46D880EEEB766A474B6074D4B98DF /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = ValueCoding; - target = 5112C7EBB0119AC3BA1E726F52B37099 /* ValueCoding */; + target = 4BC85735EDC74D4318B525FA45559B2F /* ValueCoding */; targetProxy = A8D7D5C5D4B2B0DBEA7CD9A1C6CA1131 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 0D34E788556BF0117A9E393B729CD24D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6668142B4A7F7A5DE42435220C510B8F /* Money.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/Money/Money-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Money/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/Money/Money.modulemap"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Money; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; 1A5C3AB79FFAD473C53D2FF59AD706F0 /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = DF6284F39323D79B75BEEB8C366DE87C /* Pods-Custom Money.debug.xcconfig */; @@ -715,6 +763,7 @@ OTHER_LDFLAGS = ""; OTHER_LIBTOOLFLAGS = ""; PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = Pods_Custom_Money; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -725,9 +774,9 @@ }; name = Debug; }; - 1E313C554CA678E5FBA9A8A9C495E979 /* Release */ = { + 5CCE459C2B148F060DEF089C2B8EF33E /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 765CD792203F037EA7D0D97B135C395A /* ValueCoding.xcconfig */; + baseConfigurationReference = C6AD9E331A620215773EDAE3D38920CB /* Pods-Custom Money.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -736,14 +785,18 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/ValueCoding/ValueCoding-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ValueCoding/Info.plist"; + INFOPLIST_FILE = "Target Support Files/Pods-Custom Money/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/ValueCoding/ValueCoding.modulemap"; + MACH_O_TYPE = staticlib; + MODULEMAP_FILE = "Target Support Files/Pods-Custom Money/Pods-Custom Money.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = ValueCoding; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Pods_Custom_Money; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -752,7 +805,7 @@ }; name = Release; }; - 229C78DF249EF56E40117D412B509267 /* Debug */ = { + 657B2FFE0B4CA9A09BCD2EAB206D9F5F /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 4C1460F12F695C031F6228E5D1C63C9F /* SwiftyJSON.xcconfig */; buildSettings = { @@ -770,6 +823,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = SwiftyJSON; SDKROOT = iphoneos; SKIP_INSTALL = YES; @@ -780,9 +834,9 @@ }; name = Debug; }; - 5CCE459C2B148F060DEF089C2B8EF33E /* Release */ = { + 70C41D73A07F76803797C9F3F186CDB7 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C6AD9E331A620215773EDAE3D38920CB /* Pods-Custom Money.release.xcconfig */; + baseConfigurationReference = 269178DAB03BE95581C9933E5AD7BA5E /* Result.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -791,17 +845,44 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - INFOPLIST_FILE = "Target Support Files/Pods-Custom Money/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Result/Result-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Result/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-Custom Money/Pods-Custom Money.modulemap"; + MODULEMAP_FILE = "Target Support Files/Result/Result.modulemap"; + MTL_ENABLE_DEBUG_INFO = YES; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Result; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 832DBAC21B8F1C674768DF3C0F927D1D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 4C1460F12F695C031F6228E5D1C63C9F /* SwiftyJSON.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/SwiftyJSON/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_NAME = Pods_Custom_Money; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = SwiftyJSON; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -810,7 +891,7 @@ }; name = Release; }; - 6D83889271DAA877F278D48348131D8F /* Debug */ = { + 96075CA15D96321DD896806DBD3CAF71 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 269178DAB03BE95581C9933E5AD7BA5E /* Result.xcconfig */; buildSettings = { @@ -827,20 +908,20 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; MODULEMAP_FILE = "Target Support Files/Result/Result.modulemap"; - MTL_ENABLE_DEBUG_INFO = YES; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = Result; SDKROOT = iphoneos; SKIP_INSTALL = YES; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; TARGETED_DEVICE_FAMILY = "1,2"; VERSIONING_SYSTEM = "apple-generic"; VERSION_INFO_PREFIX = ""; }; - name = Debug; + name = Release; }; - A9EE419C41A292FD5A5DA55A849AE598 /* Debug */ = { + A35C6C2EC69A39FE32D454EE4C141800 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 765CD792203F037EA7D0D97B135C395A /* ValueCoding.xcconfig */; + baseConfigurationReference = 6668142B4A7F7A5DE42435220C510B8F /* Money.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -849,14 +930,15 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/ValueCoding/ValueCoding-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/ValueCoding/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/Money/Money-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/Money/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/ValueCoding/ValueCoding.modulemap"; + MODULEMAP_FILE = "Target Support Files/Money/Money.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = ValueCoding; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = Money; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -884,6 +966,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -905,9 +988,9 @@ }; name = Debug; }; - CE64D1FCE295EEFA2910197082F6093A /* Debug */ = { + D42841C752D344FA300EDE4604BC87A1 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0F97F33A29F47BC32D7EBD2E18FAB2D /* Money.xcconfig */; + baseConfigurationReference = 765CD792203F037EA7D0D97B135C395A /* ValueCoding.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -916,14 +999,15 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Money/Money-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Money/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/ValueCoding/ValueCoding-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ValueCoding/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Money/Money.modulemap"; + MODULEMAP_FILE = "Target Support Files/ValueCoding/ValueCoding.modulemap"; MTL_ENABLE_DEBUG_INFO = YES; - PRODUCT_NAME = Money; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = ValueCoding; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; @@ -933,60 +1017,6 @@ }; name = Debug; }; - D07B644BAB1ACA7BF4FE0B94D2AD6A1E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 4C1460F12F695C031F6228E5D1C63C9F /* SwiftyJSON.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/SwiftyJSON/SwiftyJSON-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/SwiftyJSON/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/SwiftyJSON/SwiftyJSON.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = SwiftyJSON; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - D2CE3C2E7FAA5512165C714F952EEE9F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 269178DAB03BE95581C9933E5AD7BA5E /* Result.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Result/Result-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Result/Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.1; - LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Result/Result.modulemap"; - MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Result; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; E43846B588E1892F3093F3B7082B6DFB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -1021,9 +1051,9 @@ }; name = Release; }; - FE0E40BE653EF899426B04460F58B2B8 /* Release */ = { + E661B0513529A253CACF9BA0AE038BDD /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0F97F33A29F47BC32D7EBD2E18FAB2D /* Money.xcconfig */; + baseConfigurationReference = 765CD792203F037EA7D0D97B135C395A /* ValueCoding.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; CURRENT_PROJECT_VERSION = 1; @@ -1032,14 +1062,15 @@ DYLIB_CURRENT_VERSION = 1; DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_PREFIX_HEADER = "Target Support Files/Money/Money-prefix.pch"; - INFOPLIST_FILE = "Target Support Files/Money/Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/ValueCoding/ValueCoding-prefix.pch"; + INFOPLIST_FILE = "Target Support Files/ValueCoding/Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 9.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; - MODULEMAP_FILE = "Target Support Files/Money/Money.modulemap"; + MODULEMAP_FILE = "Target Support Files/ValueCoding/ValueCoding.modulemap"; MTL_ENABLE_DEBUG_INFO = NO; - PRODUCT_NAME = Money; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = ValueCoding; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -1051,56 +1082,56 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { + 081A3E84FFCCA0D120DA040D7C0642BB /* Build configuration list for PBXNativeTarget "Result" */ = { isa = XCConfigurationList; buildConfigurations = ( - C074F63C9EE7CB4D8C618390A32CEC35 /* Debug */, - E43846B588E1892F3093F3B7082B6DFB /* Release */, + 70C41D73A07F76803797C9F3F186CDB7 /* Debug */, + 96075CA15D96321DD896806DBD3CAF71 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 2F3A813139924F1A5E5B2011370475B6 /* Build configuration list for PBXNativeTarget "ValueCoding" */ = { + 1388689AACE2A14DA17A521B69C583E6 /* Build configuration list for PBXNativeTarget "Money" */ = { isa = XCConfigurationList; buildConfigurations = ( - A9EE419C41A292FD5A5DA55A849AE598 /* Debug */, - 1E313C554CA678E5FBA9A8A9C495E979 /* Release */, + A35C6C2EC69A39FE32D454EE4C141800 /* Debug */, + 0D34E788556BF0117A9E393B729CD24D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 37A41A6B9185E59239BFB81D6353E1CF /* Build configuration list for PBXNativeTarget "Pods-Custom Money" */ = { + 2D8E8EC45A3A1A1D94AE762CB5028504 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( - 1A5C3AB79FFAD473C53D2FF59AD706F0 /* Debug */, - 5CCE459C2B148F060DEF089C2B8EF33E /* Release */, + C074F63C9EE7CB4D8C618390A32CEC35 /* Debug */, + E43846B588E1892F3093F3B7082B6DFB /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 5CADF911B07C597448EFF422ABDB3FDE /* Build configuration list for PBXNativeTarget "Money" */ = { + 37A41A6B9185E59239BFB81D6353E1CF /* Build configuration list for PBXNativeTarget "Pods-Custom Money" */ = { isa = XCConfigurationList; buildConfigurations = ( - CE64D1FCE295EEFA2910197082F6093A /* Debug */, - FE0E40BE653EF899426B04460F58B2B8 /* Release */, + 1A5C3AB79FFAD473C53D2FF59AD706F0 /* Debug */, + 5CCE459C2B148F060DEF089C2B8EF33E /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 81F73A5B96E10FC3CD393C5AF6B23B20 /* Build configuration list for PBXNativeTarget "Result" */ = { + 4323EA468273039AAF7A09F78393BBD8 /* Build configuration list for PBXNativeTarget "ValueCoding" */ = { isa = XCConfigurationList; buildConfigurations = ( - 6D83889271DAA877F278D48348131D8F /* Debug */, - D2CE3C2E7FAA5512165C714F952EEE9F /* Release */, + D42841C752D344FA300EDE4604BC87A1 /* Debug */, + E661B0513529A253CACF9BA0AE038BDD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FDDDB1E35279A6D3923344153846DF57 /* Build configuration list for PBXNativeTarget "SwiftyJSON" */ = { + 4D982EA60D3570F60FB04AE8CC7B8895 /* Build configuration list for PBXNativeTarget "SwiftyJSON" */ = { isa = XCConfigurationList; buildConfigurations = ( - 229C78DF249EF56E40117D412B509267 /* Debug */, - D07B644BAB1ACA7BF4FE0B94D2AD6A1E /* Release */, + 657B2FFE0B4CA9A09BCD2EAB206D9F5F /* Debug */, + 832DBAC21B8F1C674768DF3C0F927D1D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Examples/Custom Money/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Money.xcscheme b/Examples/Custom Money/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Money.xcscheme deleted file mode 100644 index a7d04d4..0000000 --- a/Examples/Custom Money/Pods/Pods.xcodeproj/xcshareddata/xcschemes/Money.xcscheme +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/Examples/Custom Money/Pods/Target Support Files/Money/Info.plist b/Examples/Custom Money/Pods/Target Support Files/Money/Info.plist index 01903d7..d28b0f0 100644 --- a/Examples/Custom Money/Pods/Target Support Files/Money/Info.plist +++ b/Examples/Custom Money/Pods/Target Support Files/Money/Info.plist @@ -2,25 +2,25 @@ - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.1.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.2.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + diff --git a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Info.plist b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Info.plist index 6974542..11db4b7 100644 --- a/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Info.plist +++ b/Examples/Custom Money/Pods/Target Support Files/Pods-Custom Money/Info.plist @@ -2,25 +2,25 @@ - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.0.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.0.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + diff --git a/Examples/Custom Money/Pods/Target Support Files/Result/Info.plist b/Examples/Custom Money/Pods/Target Support Files/Result/Info.plist index 7b20907..b72a2b9 100644 --- a/Examples/Custom Money/Pods/Target Support Files/Result/Info.plist +++ b/Examples/Custom Money/Pods/Target Support Files/Result/Info.plist @@ -2,25 +2,25 @@ - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 0.6.0-beta.6 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.6.0-beta.6 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + diff --git a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/Info.plist b/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/Info.plist index a98a41a..20aa983 100644 --- a/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/Info.plist +++ b/Examples/Custom Money/Pods/Target Support Files/SwiftyJSON/Info.plist @@ -2,25 +2,25 @@ - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 2.3.1 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.3.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + diff --git a/Examples/Custom Money/Pods/Target Support Files/ValueCoding/Info.plist b/Examples/Custom Money/Pods/Target Support Files/ValueCoding/Info.plist index 01903d7..e417ac3 100644 --- a/Examples/Custom Money/Pods/Target Support Files/ValueCoding/Info.plist +++ b/Examples/Custom Money/Pods/Target Support Files/ValueCoding/Info.plist @@ -2,25 +2,25 @@ - CFBundleDevelopmentRegion - en - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleIdentifier - org.cocoapods.${PRODUCT_NAME:rfc1034identifier} - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ${PRODUCT_NAME} - CFBundlePackageType - FMWK - CFBundleShortVersionString - 1.1.0 - CFBundleSignature - ???? - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - NSPrincipalClass - + CFBundleDevelopmentRegion + en + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + FMWK + CFBundleShortVersionString + 1.1.0 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + From d7104bb8d93d7ee1f439fc0e3c91f7db17518b3d Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 15:51:59 +0000 Subject: [PATCH 20/30] [MNY-23]: Updates podspec --- Money.podspec | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/Money.podspec b/Money.podspec index d854565..68c1828 100644 --- a/Money.podspec +++ b/Money.podspec @@ -21,7 +21,16 @@ Pod::Spec.new do |s| s.osx.deployment_target = '10.10' s.tvos.deployment_target = '9.0' s.watchos.deployment_target = '2.0' - s.source_files = ['Money/*.swift', 'Money/Decimal/*.swift', 'Money/FX/*.swift'] + + s.source_files = [ + 'Money/Shared/*.swift', + 'Money/Shared/**/*.swift', + 'Money/iOS' + ] + + s.osx.exclude_files = [ 'Money/iOS' ] + s.watchos.exclude_files = [ 'Money/iOS' ] + s.tvos.exclude_files = [ 'Money/iOS' ] s.dependency 'ValueCoding' s.dependency 'Result', '0.6.0-beta.6' From 0ed80de9c6986bf3400c4d13f1b13650c549cdf4 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 15:52:21 +0000 Subject: [PATCH 21/30] =?UTF-8?q?[MNY-23]:=20Adds=20=EF=A3=BF=20Pay=20info?= =?UTF-8?q?=20to=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4fa8a2f..31ddb12 100644 --- a/README.md +++ b/README.md @@ -84,13 +84,17 @@ On iOS (not watchOS, tvOS or OS X), there is support in Money for using `Money` Create a `PaymentSummaryItem` in lieu of `PKPaymentSummaryItem` with a suitable `MoneyType`: ```swift -let items = [ - PaymentSummaryItem(money: 9.99, label: “Something fancy.”), - PaymentSummaryItem(money: 5.99, label: “Something else fancy.”) +typealias DollarItem = PaymentSummaryItem + +let item = [ + DollarItem(money: 9.99, label: “Something fancy.”), + DollarItem(money: 5.99, label: “Something else fancy.”) ] -let request = PKPaymentRequest(items: items) + +let request = PKPaymentRequest(items: item) ``` +The convenience initializer receives a sequence of `PaymentSummaryItem`s, and it sets the currency code and payment summary items. ## Foreign Currency Exchange (FX) To represent a foreign exchange transaction, i.e. converting `USD` to `EUR`, use a FX service provider. There is built in support for [Yahoo](https://finance.yahoo.com/currency-converter/#from=USD;to=EUR;amt=1) and [OpenExchangeRates.org](https://openexchangerates.org) services. But it’s possible for consumers to create their own too. From 36414839a7862ef8e549ab416bfdf0bd9ed0ecc0 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 16:05:16 +0000 Subject: [PATCH 22/30] [MNY-23]: Fixes typo in README --- README.md | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 31ddb12..c5a4280 100644 --- a/README.md +++ b/README.md @@ -84,17 +84,21 @@ On iOS (not watchOS, tvOS or OS X), there is support in Money for using `Money` Create a `PaymentSummaryItem` in lieu of `PKPaymentSummaryItem` with a suitable `MoneyType`: ```swift +import PassKit + typealias DollarItem = PaymentSummaryItem -let item = [ - DollarItem(money: 9.99, label: “Something fancy.”), - DollarItem(money: 5.99, label: “Something else fancy.”) +let items = [ + DollarItem(cost: 9.99, label: "Something fancy."), + DollarItem(cost: 5.99, label: "Something else fancy.") ] -let request = PKPaymentRequest(items: item) +let request = PKPaymentRequest(items: items) ``` -The convenience initializer receives a sequence of `PaymentSummaryItem`s, and it sets the currency code and payment summary items. +The convenience initializer receives a sequence of `PaymentSummaryItem`s, and it sets the currency code and payment summary items (`PKPaymentSummaryItem`s). + +`PaymentSummaryItem` conforms to `Hashable` and [`ValueCoding`](https://github.com/danthorpe/ValueCoding). ## Foreign Currency Exchange (FX) To represent a foreign exchange transaction, i.e. converting `USD` to `EUR`, use a FX service provider. There is built in support for [Yahoo](https://finance.yahoo.com/currency-converter/#from=USD;to=EUR;amt=1) and [OpenExchangeRates.org](https://openexchangerates.org) services. But it’s possible for consumers to create their own too. From f100834e9e14446b335551de26bce6908a3a0481 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 16:46:28 +0000 Subject: [PATCH 23/30] [MNY-23]: Adds documentation & total line item. --- .../Custom Money/ViewController.swift | 13 ++ Money/iOS/ApplePay.swift | 123 +++++++++++++++--- Tests/iOS/ApplePayTests.swift | 23 ++-- 3 files changed, 129 insertions(+), 30 deletions(-) diff --git a/Examples/Custom Money/Custom Money/ViewController.swift b/Examples/Custom Money/Custom Money/ViewController.swift index 4f4e784..47df37b 100644 --- a/Examples/Custom Money/Custom Money/ViewController.swift +++ b/Examples/Custom Money/Custom Money/ViewController.swift @@ -7,6 +7,7 @@ // import UIKit +import PassKit import Money class ViewController: UIViewController { @@ -22,6 +23,18 @@ class ViewController: UIViewController { let total = Bank.fx(hearts).counter + bees print("Exchanging your \(hearts) into \(Currency.Bee.symbol) via the bank gives you \(total) in total.") + + typealias DollarItem = PaymentSummaryItem + + let items = [ + DollarItem(cost: 9.99, label: "Something fancy."), + DollarItem(cost: 5.99, label: "Something else fancy.") + ] + + let request = PKPaymentRequest(items: items) + + print("request currency code: \(request.currencyCode)") + print("request payment items: \(request.paymentSummaryItems)") } } diff --git a/Money/iOS/ApplePay.swift b/Money/iOS/ApplePay.swift index 454b673..9fc386f 100644 --- a/Money/iOS/ApplePay.swift +++ b/Money/iOS/ApplePay.swift @@ -30,16 +30,51 @@ import ValueCoding // MARK: - Apple Pay equivalent types +/** + + # PaymentSummaryItemType + + An equivalent `PKPaymentSummaryItemType` enum. While defined + for iOS 8, usage will only have an impact on iOS 9. + + - see: PKPaymentSummaryItemType + */ public enum PaymentSummaryItemType: Int { case Final = 1, Pending } +/** + + # PaymentSummaryItem + + A value type to represent a payment line item. It is generic over the + `MoneyType` of the item cost. Other properties are a label and type. + + The money type must use `NSDecimalNumber` storage type, and correctly + conform to `ValueCoding`. + */ public struct PaymentSummaryItem: Hashable, ValueCoding { + /// The ValueCoding Coder type public typealias Coder = PaymentSummaryItemCoder - public let cost: Cost + /** + A label for the item. + - returns: a `String` value + */ public let label: String + + /** + The cost of the item. + - returns: a `Cost` value + */ + public let cost: Cost + + /** + The cost type of the item. See docs for + `PKPaymentSummaryItemType`. + - returns: a `PaymentSummaryItemType` value + */ public let type: PaymentSummaryItemType internal var amount: Cost.DecimalStorageType { @@ -50,32 +85,64 @@ public struct PaymentSummaryItem PaymentSummaryItem { - return PaymentSummaryItem(cost: newCost, label: label, type: type) + /** + Immutable setter for `label` property + - parameter newLabel: the value for the `label` property in an item copy + - returns: a summary item with a new label value, and previously set cost and type. + */ + public func setLabel(newLabel: String) -> PaymentSummaryItem { + return PaymentSummaryItem(label: newLabel, cost: cost, type: type) } - public func setLabel(newLabel: String) -> PaymentSummaryItem { - return PaymentSummaryItem(cost: cost, label: newLabel, type: type) + /** + Immutable setter for `cost` property + - parameter newCost: the value for the `cost` property in an item copy + - returns: a summary item with a new cost value, and previously set label and type. + */ + public func setCost(newCost: Cost) -> PaymentSummaryItem { + return PaymentSummaryItem(label: label, cost: newCost, type: type) } + /** + Immutable setter for `type` property + - parameter newType: the value for the `type` property in an item copy + - returns: a summary item with a new type value, and previously set label and cost. + */ public func setType(newType: PaymentSummaryItemType) -> PaymentSummaryItem { - return PaymentSummaryItem(cost: cost, label: label, type: newType) + return PaymentSummaryItem(label: label, cost: cost, type: newType) } } -public func ==(lhs: PaymentSummaryItem, rhs: PaymentSummaryItem) -> Bool { - return lhs.cost == rhs.cost && lhs.label == rhs.label && lhs.type == rhs.type -} - +/** + Coding adaptor for `PaymentSummaryItem`. +*/ public final class PaymentSummaryItemCoder: NSObject, NSCoding, CodingType { public let value: PaymentSummaryItem @@ -88,12 +155,12 @@ public final class PaymentSummaryItemCoder(paymentSummaryItem: PaymentSummaryItem) { self.init() @@ -127,9 +194,31 @@ extension PKPaymentSummaryItem { public extension PKPaymentRequest { - convenience init>(items: Items) { + /** + Create a payment request with a sequence of `PaymentSummaryItem`s. The + currency code will automatically be set. + + As per the guidlines the total cost is calculated and appended to the + end of the list, using your company or seller name as the label. + + - see: [guideline](https://developer.apple.com/library/ios/ApplePay_Guide/CreateRequest.html) + + - parameter items: an array of `PaymentSummaryItem` values. + - parameter sellerName: a `String` which is used in the total cost summary item. + - returns: a `PKPaymentRequest` which has its payment summary items and currency code set. + */ + convenience init(var items: [PaymentSummaryItem], sellerName: String) { self.init() currencyCode = Cost.Currency.code + let total = items.map { $0.cost }.reduce(0, combine: +) + items.append(PaymentSummaryItem(label: sellerName, cost: total)) paymentSummaryItems = items.map { PKPaymentSummaryItem(paymentSummaryItem: $0) } } } + +// MARK: - Equality + +public func ==(lhs: PaymentSummaryItem, rhs: PaymentSummaryItem) -> Bool { + return lhs.cost == rhs.cost && lhs.label == rhs.label && lhs.type == rhs.type +} + diff --git a/Tests/iOS/ApplePayTests.swift b/Tests/iOS/ApplePayTests.swift index 4cc1cf5..144d236 100644 --- a/Tests/iOS/ApplePayTests.swift +++ b/Tests/iOS/ApplePayTests.swift @@ -17,7 +17,7 @@ class ApplePayTests: XCTestCase { override func setUp() { super.setUp() - item = PaymentSummaryItem(cost: 679, label: "iPad Pro, 32GB with WiFi", type: .Final) + item = PaymentSummaryItem(label: "iPad Pro, 32GB with WiFi", cost: 679, type: .Final) items.insert(item) } } @@ -52,14 +52,14 @@ class PaymentSummaryItemTests: ApplePayTests { func test__set_new_type__sets_type() { item = item.setType(.Pending) - XCTAssertEqual(item.cost, 679) + XCTAssertEqual(item.cost, 0) XCTAssertEqual(item.label, "iPad Pro, 32GB with WiFi") XCTAssertEqual(item.type, PaymentSummaryItemType.Pending) } func test__equality() { - XCTAssertEqual(item, PaymentSummaryItem(cost: 679, label: "iPad Pro, 32GB with WiFi", type: .Final)) - XCTAssertNotEqual(item, PaymentSummaryItem(cost: 799, label: "iPad Pro, 128GB with WiFi", type: .Final)) + XCTAssertEqual(item, PaymentSummaryItem(label: "iPad Pro, 32GB with WiFi", cost: 679, type: .Final)) + XCTAssertNotEqual(item, PaymentSummaryItem(label: "iPad Pro, 128GB with WiFi", cost: 799, type: .Final)) } } @@ -104,15 +104,12 @@ class PKPaymentSummaryItemTests: ApplePayTests { class PKPaymentRequestTests: ApplePayTests { func test__init__with_items() { - items.insert(PaymentSummaryItem(cost: 799, label: "iPad Pro, 128GB with WiFi", type: .Final)) - items.insert(PaymentSummaryItem(cost: 899, label: "iPad Pro, 128GB with WiFi + Cellular", type: .Final)) - let request = PKPaymentRequest(items: items) - XCTAssertEqual(request.currencyCode, GBP.Currency.code) - XCTAssertEqual(request.paymentSummaryItems.count, 3) - let total = request.paymentSummaryItems.reduce(NSDecimalNumber.zero()) { (acc, item) in - return acc.decimalNumberByAdding(item.amount) - } + items.insert(PaymentSummaryItem(label: "iPad Pro, 128GB with WiFi", cost: 799, type: .Final)) + items.insert(PaymentSummaryItem(label: "iPad Pro, 128GB with WiFi + Cellular", cost: 899, type: .Final)) + let request = PKPaymentRequest(items: Array(items), sellerName: "Acme. Inc") - XCTAssertEqual(total, items.map { $0.cost }.reduce(0, combine: +).amount) + XCTAssertEqual(request.currencyCode, GBP.Currency.code) + XCTAssertEqual(request.paymentSummaryItems.count, 4) + XCTAssertEqual(request.paymentSummaryItems.last!.amount, items.map { $0.cost }.reduce(0, combine: +).amount) } } From 0fb065b97e790a0806a38ce4ebad9c1dd02f75bc Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 16:49:31 +0000 Subject: [PATCH 24/30] [MNY-23]: Adds a test for the seller name being set. --- Tests/iOS/ApplePayTests.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/Tests/iOS/ApplePayTests.swift b/Tests/iOS/ApplePayTests.swift index 144d236..af5baa1 100644 --- a/Tests/iOS/ApplePayTests.swift +++ b/Tests/iOS/ApplePayTests.swift @@ -110,6 +110,7 @@ class PKPaymentRequestTests: ApplePayTests { XCTAssertEqual(request.currencyCode, GBP.Currency.code) XCTAssertEqual(request.paymentSummaryItems.count, 4) + XCTAssertEqual(request.paymentSummaryItems.last!.label, "Acme. Inc") XCTAssertEqual(request.paymentSummaryItems.last!.amount, items.map { $0.cost }.reduce(0, combine: +).amount) } } From 4ede27b258a5a7ebe7a2b242f0c7b5d8d1e6936c Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 16:53:44 +0000 Subject: [PATCH 25/30] [MNY-23]: Removing example code. --- .../Custom Money/Custom Money/ViewController.swift | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/Examples/Custom Money/Custom Money/ViewController.swift b/Examples/Custom Money/Custom Money/ViewController.swift index 47df37b..4f4e784 100644 --- a/Examples/Custom Money/Custom Money/ViewController.swift +++ b/Examples/Custom Money/Custom Money/ViewController.swift @@ -7,7 +7,6 @@ // import UIKit -import PassKit import Money class ViewController: UIViewController { @@ -23,18 +22,6 @@ class ViewController: UIViewController { let total = Bank.fx(hearts).counter + bees print("Exchanging your \(hearts) into \(Currency.Bee.symbol) via the bank gives you \(total) in total.") - - typealias DollarItem = PaymentSummaryItem - - let items = [ - DollarItem(cost: 9.99, label: "Something fancy."), - DollarItem(cost: 5.99, label: "Something else fancy.") - ] - - let request = PKPaymentRequest(items: items) - - print("request currency code: \(request.currencyCode)") - print("request payment items: \(request.paymentSummaryItems)") } } From b1b06fe6b947cc44ad6870f6952f6adbc7585f5d Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 16:55:01 +0000 Subject: [PATCH 26/30] [MNY-23]: Updates README --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c5a4280..9092fc6 100644 --- a/README.md +++ b/README.md @@ -89,11 +89,11 @@ import PassKit typealias DollarItem = PaymentSummaryItem let items = [ - DollarItem(cost: 9.99, label: "Something fancy."), - DollarItem(cost: 5.99, label: "Something else fancy.") + DollarItem(label: "Something fancy.”, cost: 9.99), + DollarItem(label: "Something else fancy.”, cost: 5.99) ] -let request = PKPaymentRequest(items: items) +let request = PKPaymentRequest(items: items, sellerName: "Acme, Inc.") ``` The convenience initializer receives a sequence of `PaymentSummaryItem`s, and it sets the currency code and payment summary items (`PKPaymentSummaryItem`s). From 6a40aa1b9433b34a0dc4f4266799405724b18620 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 17:05:49 +0000 Subject: [PATCH 27/30] [MNY-23]: More updates to the README. --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 9092fc6..3a953aa 100644 --- a/README.md +++ b/README.md @@ -89,14 +89,14 @@ import PassKit typealias DollarItem = PaymentSummaryItem let items = [ - DollarItem(label: "Something fancy.”, cost: 9.99), - DollarItem(label: "Something else fancy.”, cost: 5.99) + DollarItem(label: "Something fancy.", cost: 9.99), + DollarItem(label: "Something less fancy.", cost: 5.99) ] let request = PKPaymentRequest(items: items, sellerName: "Acme, Inc.") ``` -The convenience initializer receives a sequence of `PaymentSummaryItem`s, and it sets the currency code and payment summary items (`PKPaymentSummaryItem`s). +The convenience initializer receives an array of `PaymentSummaryItem` values and a seller name. It sets the currency code and payment summary items. Following the  Pay guidelines, will append a total summary item using the provided seller name. `PaymentSummaryItem` conforms to `Hashable` and [`ValueCoding`](https://github.com/danthorpe/ValueCoding). From cc556152e8428afb1d26e7949dc0f7e4f68d66ee Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Mon, 16 Nov 2015 18:53:10 +0000 Subject: [PATCH 28/30] [development]: Fixes an issue preventing podspec from linting --- Money/iOS/ApplePay.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Money/iOS/ApplePay.swift b/Money/iOS/ApplePay.swift index 9fc386f..ae46720 100644 --- a/Money/iOS/ApplePay.swift +++ b/Money/iOS/ApplePay.swift @@ -167,7 +167,7 @@ public final class PaymentSummaryItemCoder Date: Thu, 19 Nov 2015 18:59:04 +0000 Subject: [PATCH 29/30] [release]: Updates the version to 1.3.0 --- Money.podspec | 2 +- Supporting Files/Money.xcconfig | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Money.podspec b/Money.podspec index 68c1828..26f2b7c 100644 --- a/Money.podspec +++ b/Money.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |s| s.name = "Money" - s.version = "1.2.1" + s.version = "1.3.0" s.summary = "Swift types for working with Money." s.description = <<-DESC diff --git a/Supporting Files/Money.xcconfig b/Supporting Files/Money.xcconfig index f8bd0c3..850e0bd 100644 --- a/Supporting Files/Money.xcconfig +++ b/Supporting Files/Money.xcconfig @@ -6,7 +6,7 @@ // // -MONEY_VERSION = 1.2.1 +MONEY_VERSION = 1.3.0 APPLICATION_EXTENSION_API_ONLY = YES INFOPLIST_FILE = $(SRCROOT)/Supporting Files/Info.plist From 24132cb0adc969b4cbfc61b39a791a05462327b1 Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Thu, 19 Nov 2015 18:59:15 +0000 Subject: [PATCH 30/30] [release]: Updates the CHANGELOG --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a7019f..cacb02f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# 1.3.0 +1. [[MNY-21](https://github.com/danthorpe/Money/pull/21), [MNY-22](https://github.com/danthorpe/Money/pull/22)]: Adds support for initializing `MoneyType`s with minor units. Thanks to [@jlalvarez18](https://github.com/jlalvarez18). +2. [[MNY-23](https://github.com/danthorpe/Money/pull/23)]: Adds some convenience extensions to create  pay payment requests using an array of `PaymentSummaryItem` which is a new type generic over `MoneyType`. This is only available on iOS, and it allows consumers to use `Money` directly with  pay APIs. + # 1.2.1 1. [[MNY-19](https://github.com/danthorpe/Money/pull/19)]: Fixes a bunch of miscellaneous spelling mistakes in the README and code documentation. 2. [[MNY-20](https://github.com/danthorpe/Money/pull/20)]: Fixes a mistake where DVR which is only needed for the test suit was not in a private Cartfile. Also switches to the official @venmo DVR after recent merges in their project. Thanks to @dasmer for this.