diff --git a/README.playground/Contents.swift b/README.playground/Contents.swift new file mode 100644 index 0000000..b288b78 --- /dev/null +++ b/README.playground/Contents.swift @@ -0,0 +1,72 @@ +import UIKit + +enum Currency { + case cad + case mxn +} + +let usToCad = 1.30 +let usToMxn = 20.32 +var currency: Currency = .cad + +var currencyFormatter: NumberFormatter = { + let formatter = NumberFormatter() + formatter.numberStyle = .currency + return formatter +}() + +func convert(_ dollars: Double) -> Double { + var result = 0.0 + switch currency { + case .cad: + result = dollars * usToCad + case .mxn: + result = dollars * usToMxn + } + return result +} + +func convert(amountString: String) -> String? { + guard let amount = Double(amountString) else { return "Amount string could not be converted" } + let conversionResult = convert(amount) + var resultString = "" + + switch currency { + case .cad: + currencyFormatter.currencyCode = "CAD" + currencyFormatter.currencySymbol = "C$" + currencyFormatter.currencyDecimalSeparator = "." + currencyFormatter.currencyGroupingSeparator = "," + currencyFormatter.internationalCurrencySymbol = "C$" + case .mxn: + currencyFormatter.currencyCode = "MXN" + currencyFormatter.currencySymbol = "MX$" + currencyFormatter.currencyDecimalSeparator = "." + currencyFormatter.currencyGroupingSeparator = "," + currencyFormatter.internationalCurrencySymbol = "MX$" + } + + if let unwrappedString = currencyFormatter.string(from: conversionResult as NSNumber) { + resultString = unwrappedString + } else { + resultString = "Number formatting failed." + } + + return resultString +} + +print(convert(100)) +if let successfulConversion = convert(amountString: "100") { + print(successfulConversion) +} + +currency = .mxn + +print(convert(100)) +if let successfulConversion = convert(amountString: "100") { + print(successfulConversion) +} + + + + diff --git a/README.playground/contents.xcplayground b/README.playground/contents.xcplayground new file mode 100644 index 0000000..cf026f2 --- /dev/null +++ b/README.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/README.playground/playground.xcworkspace/contents.xcworkspacedata b/README.playground/playground.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..ca3329e --- /dev/null +++ b/README.playground/playground.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/README.playground/playground.xcworkspace/xcuserdata/waseemidelbi.xcuserdatad/UserInterfaceState.xcuserstate b/README.playground/playground.xcworkspace/xcuserdata/waseemidelbi.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000..4f49d2c Binary files /dev/null and b/README.playground/playground.xcworkspace/xcuserdata/waseemidelbi.xcuserdatad/UserInterfaceState.xcuserstate differ