diff --git a/Caravel.podspec b/Caravel.podspec index f88baaa..0b4ea85 100644 --- a/Caravel.podspec +++ b/Caravel.podspec @@ -15,7 +15,7 @@ Pod::Spec.new do |s| # summary should be tweet-length, and the description more in depth. # - version = "0.3.4" + version = "0.4.0" s.name = "Caravel" s.version = version diff --git a/Caravel.xcodeproj/project.pbxproj b/Caravel.xcodeproj/project.pbxproj index 3ce5bbc..57d4b90 100644 --- a/Caravel.xcodeproj/project.pbxproj +++ b/Caravel.xcodeproj/project.pbxproj @@ -187,6 +187,8 @@ A7F1DD891B17D957001E9B94 /* Project object */ = { isa = PBXProject; attributes = { + LastSwiftMigration = 0700; + LastSwiftUpdateCheck = 0700; LastUpgradeCheck = 0630; ORGANIZATIONNAME = "Coshx Labs"; TargetAttributes = { @@ -304,7 +306,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; MTL_ENABLE_DEBUG_INFO = YES; ONLY_ACTIVE_ARCH = YES; SDKROOT = iphoneos; @@ -346,7 +348,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 8.3; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/caravel-test.xcodeproj/project.pbxproj b/caravel-test.xcodeproj/project.pbxproj index e1d03fc..e162945 100644 --- a/caravel-test.xcodeproj/project.pbxproj +++ b/caravel-test.xcodeproj/project.pbxproj @@ -242,6 +242,8 @@ A7F1DE1B1B18045C001E9B94 /* Project object */ = { isa = PBXProject; attributes = { + LastSwiftMigration = 0700; + LastSwiftUpdateCheck = 0700; LastUpgradeCheck = 0630; ORGANIZATIONNAME = "Coshx Labs"; TargetAttributes = { @@ -453,6 +455,7 @@ "/Users/acadet/Documents/workspace/swift/caravel/build/Debug-iphoneos", ); INFOPLIST_FILE = "caravel-test/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -467,6 +470,7 @@ "/Users/acadet/Documents/workspace/swift/caravel/build/Debug-iphoneos", ); INFOPLIST_FILE = "caravel-test/Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; }; diff --git a/caravel/ArgumentParser.swift b/caravel/ArgumentParser.swift index 29962f6..c2f99a3 100644 --- a/caravel/ArgumentParser.swift +++ b/caravel/ArgumentParser.swift @@ -15,7 +15,7 @@ import Foundation internal class ArgumentParser { internal class func parse(input: String) -> (busName: String, eventName: String, eventData: String?) { - var queryPairs = input.componentsSeparatedByString("&") + let queryPairs = input.componentsSeparatedByString("&") var outcome: (busName: String, eventName: String, eventData: String?) = (busName: "", eventName: "", eventData: nil) for p in queryPairs { diff --git a/caravel/Caravel.swift b/caravel/Caravel.swift index 8ad6fee..e39fd5c 100644 --- a/caravel/Caravel.swift +++ b/caravel/Caravel.swift @@ -122,7 +122,7 @@ public class Caravel: NSObject, UIWebViewDelegate { public func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool { if let scheme: String = request.URL?.scheme { if scheme == "caravel" { - var args = ArgumentParser.parse(request.URL!.query!) + let args = ArgumentParser.parse(request.URL!.query!) // All buses are notified about that incoming event. Then, they need to investigate first if they // are potential receivers @@ -134,7 +134,7 @@ public class Caravel: NSObject, UIWebViewDelegate { self._isInitialized = true for i in self._initializers { - var index = self._onGoingInitializersId + let index = self._onGoingInitializersId self._onGoingInitializers[index] = i self._onGoingInitializersId++ @@ -315,7 +315,7 @@ public class Caravel: NSObject, UIWebViewDelegate { objc_sync_exit(Caravel._namedBusInitLock) return bus } else { - var newBus = Caravel(name: name, webView: webView) + let newBus = Caravel(name: name, webView: webView) _buses.append(newBus) objc_sync_exit(Caravel._namedBusInitLock) return newBus diff --git a/caravel/DataSerializer.swift b/caravel/DataSerializer.swift index 9183301..1bad577 100644 --- a/caravel/DataSerializer.swift +++ b/caravel/DataSerializer.swift @@ -19,16 +19,16 @@ internal class DataSerializer { switch (type) { case .Bool: - var b = input as! Bool + let b = input as! Bool output = b ? "true" : "false" case .Int: - var i = input as! Int + let i = input as! Int output = "\(i)" case .Double: - var d = input as! Double + let d = input as! Double output = "\(d)" case .Float: - var f = input as! Float + let f = input as! Float output = "\(f)" case .String: var s = input as! String @@ -39,8 +39,8 @@ internal class DataSerializer { case .Array, .Dictionary: // Array and Dictionary are serialized to JSON. // They should wrap only "basic" data (same types than supported ones) - var json = NSJSONSerialization.dataWithJSONObject(input, options: NSJSONWritingOptions(), error: NSErrorPointer())! - var s = NSString(data: json, encoding: NSUTF8StringEncoding)! + let json = try! NSJSONSerialization.dataWithJSONObject(input, options: NSJSONWritingOptions()) + let s = NSString(data: json, encoding: NSUTF8StringEncoding)! output = s as String } @@ -48,16 +48,16 @@ internal class DataSerializer { } internal static func deserialize(input: String) -> AnyObject { - if count(input) > 0 { + if input.characters.count > 0 { if input[0] == "[" || input[0] == "{" { // Array or Dictionary, matching JSON format - var json = input.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)! - return NSJSONSerialization.JSONObjectWithData(json, options: NSJSONReadingOptions(), error: NSErrorPointer())! + let json = input.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)! + return try! NSJSONSerialization.JSONObjectWithData(json, options: NSJSONReadingOptions()) } // To investigate if the input is a number (int or double), // we check if the first char is a digit or no - if let isANumber = input[0].toInt() { - if let i = input.toInt() { + if let isANumber = Int(input[0]) { + if let i = Int(input) { return i } else { return (input as NSString).doubleValue diff --git a/caravel/UIWebViewDelegateMediator.swift b/caravel/UIWebViewDelegateMediator.swift index 42f572a..b7d1824 100644 --- a/caravel/UIWebViewDelegateMediator.swift +++ b/caravel/UIWebViewDelegateMediator.swift @@ -25,7 +25,7 @@ internal class UIWebViewDelegateMediator: NSObject, UIWebViewDelegate { private lazy var _webViewSubscribers: [Int: [UIWebViewDelegate]] = [Int: [UIWebViewDelegate]]() private func iterateOverDelegates(webView: UIWebView, callback: (UIWebViewDelegate) -> Void) { - var array = UIWebViewDelegateMediator._singleton._webViewSubscribers[webView.hash]! + let array = UIWebViewDelegateMediator._singleton._webViewSubscribers[webView.hash]! for e in array { callback(e) @@ -53,7 +53,7 @@ internal class UIWebViewDelegateMediator: NSObject, UIWebViewDelegate { // About methods below: // All calls use safe unwrapper for those method implementations are optional - func webView(webView: UIWebView, didFailLoadWithError error: NSError) { + func webView(webView: UIWebView, didFailLoadWithError error: NSError?) { iterateOverDelegates(webView) { e in e.webView?(webView, didFailLoadWithError: error) } @@ -64,7 +64,7 @@ internal class UIWebViewDelegateMediator: NSObject, UIWebViewDelegate { // If any subscriber woud like t iterateOverDelegates(webView) { e in - var b = e.webView?(webView, shouldStartLoadWithRequest: request, navigationType: navigationType) + let b = e.webView?(webView, shouldStartLoadWithRequest: request, navigationType: navigationType) // If any subscriber would like to run that URL, DO NOT prevent it to do it shouldLoad = (b == nil) ? shouldLoad : (shouldLoad || b!) diff --git a/caravel/js/Gruntfile.js b/caravel/js/Gruntfile.js index b04c3a7..43aa10e 100644 --- a/caravel/js/Gruntfile.js +++ b/caravel/js/Gruntfile.js @@ -1,7 +1,7 @@ module.exports = function (grunt) { 'use strict'; - var version = '0.3.4'; + var version = '0.4.0'; // Project configuration grunt.initConfig({ diff --git a/caravel/js/caravel.min.js b/caravel/js/caravel.min.js index 325dafa..dcbb9d4 100644 --- a/caravel/js/caravel.min.js +++ b/caravel/js/caravel.min.js @@ -1,2 +1,2 @@ -/** Caravel 0.3.4 - https://github.com/coshx/caravel */ +/** Caravel 0.4.0 - https://github.com/coshx/caravel */ var Caravel;Caravel=function(){function Caravel(name){this.name=name,this.subscribers=[]}return Caravel["default"]=null,Caravel.buses=[],Caravel.prototype._post=function(eventName,data){var iframe,src;return iframe=document.createElement("iframe"),src="caravel://host.com?busName="+encodeURIComponent(this.name)+"&eventName="+encodeURIComponent(eventName),null!=data&&(src+=data instanceof Array||data instanceof Object?"&eventData="+encodeURIComponent(JSON.stringify(data)):"&eventData="+encodeURIComponent(data)),iframe.setAttribute("src",src),document.documentElement.appendChild(iframe),iframe.parentNode.removeChild(iframe)},Caravel.prototype.getName=function(){return this.name},Caravel.prototype.post=function(name,data){return this._post(name,data)},Caravel.prototype.register=function(name,callback){return this.subscribers.push({name:name,callback:callback})},Caravel.prototype.raise=function(name,data){var e,i,len,parsedData,ref,results;for(parsedData=data instanceof Array||data instanceof Object||"string"==typeof data||data instanceof String?data:JSON.parse(data),ref=this.subscribers,results=[],i=0,len=ref.length;len>i;i++)e=ref[i],e.name===name?results.push(e.callback(name,parsedData)):results.push(void 0);return results},Caravel.getDefault=function(){return null==Caravel["default"]&&(Caravel["default"]=new Caravel("default"),Caravel["default"].post("CaravelInit")),Caravel["default"]},Caravel.get=function(name){var b,i,len,ref;for(ref=Caravel.buses,i=0,len=ref.length;len>i;i++)if(b=ref[i],b.getName()===name)return b;return b=new Caravel(name),Caravel.buses.push(b),b.post("CaravelInit"),b},Caravel}(); \ No newline at end of file diff --git a/caravel/utils/StringExtension.swift b/caravel/utils/StringExtension.swift index 07a3dd5..9275262 100644 --- a/caravel/utils/StringExtension.swift +++ b/caravel/utils/StringExtension.swift @@ -10,7 +10,7 @@ import Foundation internal extension String { subscript (i: Int) -> Character { - return self[advance(self.startIndex, i)] + return self[self.startIndex.advancedBy(i)] } subscript (i: Int) -> String { @@ -18,6 +18,6 @@ internal extension String { } subscript (r: Range) -> String { - return substringWithRange(Range(start: advance(startIndex, r.startIndex), end: advance(startIndex, r.endIndex))) + return substringWithRange(Range(start: startIndex.advancedBy(r.startIndex), end: startIndex.advancedBy(r.endIndex))) } }