Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 7 additions & 13 deletions HHRouter/HHRouter.m
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,9 @@
#import "HHRouter.h"
#import <objc/runtime.h>

const static NSString *HHRouterScheme = @"HHRouterScheme";
const static NSString *HHRouterHost = @"HHRouterHost";

@interface HHRouter ()
@property (strong, nonatomic) NSMutableDictionary *routes;
@end
Expand Down Expand Up @@ -105,7 +108,7 @@ - (NSDictionary *)paramsInRoute:(NSString *)route
{
NSMutableDictionary *params = [NSMutableDictionary dictionary];

params[@"route"] = [self stringFromFilterAppUrlScheme:route];
params[@"route"] = route;

NSMutableDictionary *subRoutes = self.routes;
NSArray *pathComponents = [self pathComponentsFromRoute:params[@"route"]];
Expand Down Expand Up @@ -174,8 +177,11 @@ - (NSMutableDictionary *)routes
- (NSArray *)pathComponentsFromRoute:(NSString *)route
{
NSMutableArray *pathComponents = [NSMutableArray array];
NSURLComponents *urlComponents = [NSURLComponents componentsWithString:[route stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSURL *url = [NSURL URLWithString:[route stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];

[pathComponents addObject:urlComponents.scheme ?: HHRouterScheme];
[pathComponents addObject:urlComponents.host ?: HHRouterHost];
for (NSString *pathComponent in url.path.pathComponents) {
if ([pathComponent isEqualToString:@"/"]) continue;
if ([[pathComponent substringToIndex:1] isEqualToString:@"?"]) break;
Expand All @@ -185,18 +191,6 @@ - (NSArray *)pathComponentsFromRoute:(NSString *)route
return [pathComponents copy];
}

- (NSString *)stringFromFilterAppUrlScheme:(NSString *)string
{
// filter out the app URL compontents.
for (NSString *appUrlScheme in [self appUrlSchemes]) {
if ([string hasPrefix:[NSString stringWithFormat:@"%@:", appUrlScheme]]) {
return [string substringFromIndex:appUrlScheme.length + 2];
}
}

return string;
}

- (NSArray *)appUrlSchemes
{
NSMutableArray *appUrlSchemes = [NSMutableArray array];
Expand Down