Skip to content

Commit 384fa09

Browse files
authored
Merge pull request #112 from button/pavel/111_registerHandlerClass_swift3_interface
#111 - registerHandlerClass:forRoute: interface is generated for Swift 3
2 parents 6931ecf + 0cfaaac commit 384fa09

File tree

4 files changed

+15
-8
lines changed

4 files changed

+15
-8
lines changed

.travis.yml

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ branches:
33
only:
44
master
55
before_install:
6-
- gem install activesupport -N
7-
- gem install slather --no-rdoc --no-ri --no-document --quiet
8-
- gem i cocoapods --no-ri --no-rdoc
6+
- bundle
97
- pod install
108
script:
119
- xctool test -workspace DeepLinkKit.xcworkspace -scheme ReceiverDemo -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO

DeepLinkKit/Router/DPLDeepLinkRouter.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
@import Foundation;
22

3-
@class DPLDeepLink;
4-
@protocol DPLRouteHandler;
3+
@class DPLDeepLink;
54

65

76
/**
@@ -48,7 +47,7 @@ typedef void(^DPLRouteCompletionBlock)(BOOL handled, NSError *error);
4847
For example, you can register a class for a route as follows:
4948
@code deepLinkRouter[@"table/book/:id"] = [MyBookingRouteHandler class]; @endcode
5049
*/
51-
- (void)registerHandlerClass:(Class <DPLRouteHandler>)handlerClass forRoute:(NSString *)route;
50+
- (void)registerHandlerClass:(Class)handlerClass forRoute:(NSString *)route;
5251

5352

5453
/**

DeepLinkKit/Router/DPLDeepLinkRouter.m

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,9 +42,9 @@ - (BOOL)applicationCanHandleDeepLinks {
4242

4343
#pragma mark - Registering Routes
4444

45-
- (void)registerHandlerClass:(Class <DPLRouteHandler>)handlerClass forRoute:(NSString *)route {
45+
- (void)registerHandlerClass:(Class)handlerClass forRoute:(NSString *)route {
4646

47-
if (handlerClass && [route length]) {
47+
if (handlerClass && [handlerClass isSubclassOfClass:[DPLRouteHandler class]] && [route length]) {
4848
[self.routes addObject:route];
4949
[self.blocksByRoute removeObjectForKey:route];
5050
self.classesByRoute[route] = handlerClass;

Tests/Router/DPLDeepLinkRouterSpec.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,21 @@
2929
expect(router[route]).to.equal([DPLRouteHandler class]);
3030
});
3131

32+
it(@"registers a class for a route with registerHandlerClass:forRoute:", ^{
33+
[router registerHandlerClass:[DPLRouteHandler class] forRoute:route];
34+
expect(router[route]).to.equal([DPLRouteHandler class]);
35+
});
36+
3237
it(@"does NOT register a class not conforming to DPLRouteHandler protocol", ^{
3338
router[route] = [NSObject class];
3439
expect(router[route]).to.beNil();
3540
});
3641

42+
it(@"does NOT register not a subclass of DPLRouteHandler with registerHandlerClass:forRoute:", ^{
43+
[router registerHandlerClass:[NSObject class] forRoute:route];
44+
expect(router[route]).to.beNil();
45+
});
46+
3747
it(@"does NOT register routes that are not strings", ^{
3848
router[(id)@(0)] = [DPLRouteHandler class];
3949
expect(router[route]).to.beNil();

0 commit comments

Comments
 (0)