Просмотр исходного кода

Added better extension-checking logic.

Tim Oliver лет назад: 10
Родитель
Сommit
a5e0bbd50e

+ 1 - 0
Classes/GlobalStateExplorers/DatabaseBrowser/FLEXTableListViewController.h

@@ -10,6 +10,7 @@
 
 @interface FLEXTableListViewController : UITableViewController
 
++ (BOOL)supportsExtension:(NSString *)extension;
 - (instancetype)initWithPath:(NSString *)path;
 
 @end

+ 39 - 3
Classes/GlobalStateExplorers/DatabaseBrowser/FLEXTableListViewController.m

@@ -22,11 +22,13 @@
 
 @property (nonatomic, strong) NSArray *tables;
 
++ (NSArray *)supportedSQLiteExtensions;
++ (NSArray *)supportedRealmExtensions;
+
 @end
 
 @implementation FLEXTableListViewController
 
-
 - (instancetype)initWithPath:(NSString *)path
 {
     self = [super initWithStyle:UITableViewStyleGrouped];
@@ -43,10 +45,13 @@
 {
     NSString *pathExtension = path.pathExtension.lowercaseString;
     
-    if ([@[@"db", @"sqlite", @"sqlite3"] indexOfObject:pathExtension] != NSNotFound) {
+    NSArray *sqliteExtensions = [FLEXTableListViewController supportedSQLiteExtensions];
+    if ([sqliteExtensions indexOfObject:pathExtension] != NSNotFound) {
         return [[FLEXSQLiteDatabaseManager alloc] initWithPath:path];
     }
-    else if ([pathExtension isEqualToString:@"realm"]) {
+    
+    NSArray *realmExtensions = [FLEXTableListViewController supportedRealmExtensions];
+    if (realmExtensions != nil && [realmExtensions indexOfObject:pathExtension] != NSNotFound) {
         return [[FLEXRealmDatabaseManager alloc] initWithPath:path];
     }
     
@@ -97,4 +102,35 @@
     return [NSString stringWithFormat:@"%lu tables", (unsigned long)self.tables.count];
 }
 
++ (BOOL)supportsExtension:(NSString *)extension
+{
+    extension = extension.lowercaseString;
+    
+    NSArray *sqliteExtensions = [FLEXTableListViewController supportedSQLiteExtensions];
+    if (sqliteExtensions.count > 0 && [sqliteExtensions indexOfObject:extension] != NSNotFound) {
+        return YES;
+    }
+    
+    NSArray *realmExtensions = [FLEXTableListViewController supportedRealmExtensions];
+    if (realmExtensions.count > 0 && [realmExtensions indexOfObject:extension] != NSNotFound) {
+        return YES;
+    }
+    
+    return NO;
+}
+
++ (NSArray *)supportedSQLiteExtensions
+{
+    return @[@"db", @"sqlite", @"sqlite3"];
+}
+
++ (NSArray *)supportedRealmExtensions
+{
+    if (NSClassFromString(@"RLMRealm") == nil) {
+        return nil;
+    }
+    
+    return @[@"realm"];
+}
+
 @end

+ 1 - 4
Classes/GlobalStateExplorers/FLEXFileBrowserTableViewController.m

@@ -217,10 +217,7 @@
                 drillInViewController = [[FLEXWebViewController alloc] initWithText:prettyString];
             } else if ([FLEXWebViewController supportsPathExtension:pathExtension]) {
                 drillInViewController = [[FLEXWebViewController alloc] initWithURL:[NSURL fileURLWithPath:fullPath]];
-            } else if ([@[@"db", @"sqlite", @"sqlite3"] containsObject:[subpath pathExtension]]) {
-                drillInViewController = [[FLEXTableListViewController alloc] initWithPath:fullPath];
-            }
-            else if (NSClassFromString(@"RLMRealm") && [@[@"realm"] containsObject:[subpath pathExtension]]) {
+            } else if ([FLEXTableListViewController supportsExtension:subpath.pathExtension]) {
                 drillInViewController = [[FLEXTableListViewController alloc] initWithPath:fullPath];
             }
             else {