forked from organicmaps/organicmaps
[ios] Added input validators.
This commit is contained in:
parent
6d6358789c
commit
e036813962
10 changed files with 123 additions and 0 deletions
|
@ -0,0 +1,5 @@
|
|||
#import "MWMInputValidator.h"
|
||||
|
||||
@interface MWMInputEmailValidator : MWMInputValidator
|
||||
|
||||
@end
|
|
@ -0,0 +1,32 @@
|
|||
#import "MWMInputEmailValidator.h"
|
||||
|
||||
static NSString * const kEmailRegexPattern = @"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}";
|
||||
|
||||
@implementation MWMInputEmailValidator
|
||||
|
||||
- (BOOL)validateString:(NSString *)string
|
||||
{
|
||||
if (![super validateString:string])
|
||||
return NO;
|
||||
NSError * err;
|
||||
NSRegularExpression * regex =
|
||||
[NSRegularExpression regularExpressionWithPattern:kEmailRegexPattern
|
||||
options:NSRegularExpressionCaseInsensitive
|
||||
error:&err];
|
||||
NSAssert(!err, @"Invalid regular expression");
|
||||
NSMutableArray<NSString *> * matches = [@[] mutableCopy];
|
||||
NSRange const range = {0, string.length};
|
||||
[regex enumerateMatchesInString:string
|
||||
options:NSMatchingReportProgress
|
||||
range:range
|
||||
usingBlock:^(NSTextCheckingResult * _Nullable result, NSMatchingFlags flags,
|
||||
BOOL * _Nonnull stop)
|
||||
{
|
||||
[matches addObject:[string substringWithRange:result.range]];
|
||||
}];
|
||||
if (matches.count != 1)
|
||||
return NO;
|
||||
return [matches[0] isEqualToString:string];
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,5 @@
|
|||
#import "MWMInputValidator.h"
|
||||
|
||||
@interface MWMInputLoginValidator : MWMInputValidator
|
||||
|
||||
@end
|
|
@ -0,0 +1,14 @@
|
|||
#import "MWMInputLoginValidator.h"
|
||||
|
||||
NSUInteger constexpr minLoginLength = 3;
|
||||
|
||||
@implementation MWMInputLoginValidator
|
||||
|
||||
- (BOOL)validateString:(NSString *)string
|
||||
{
|
||||
if (![super validateString:string])
|
||||
return NO;
|
||||
return string.length >= minLoginLength;
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,5 @@
|
|||
#import "MWMInputValidator.h"
|
||||
|
||||
@interface MWMInputPasswordValidator : MWMInputValidator
|
||||
|
||||
@end
|
|
@ -0,0 +1,14 @@
|
|||
#import "MWMInputPasswordValidator.h"
|
||||
|
||||
NSUInteger constexpr minPasswordLength = 8;
|
||||
|
||||
@implementation MWMInputPasswordValidator
|
||||
|
||||
- (BOOL)validateString:(NSString *)string
|
||||
{
|
||||
if (![super validateString:string])
|
||||
return NO;
|
||||
return string.length >= minPasswordLength;
|
||||
}
|
||||
|
||||
@end
|
6
iphone/Maps/Classes/InputValidators/MWMInputValidator.h
Normal file
6
iphone/Maps/Classes/InputValidators/MWMInputValidator.h
Normal file
|
@ -0,0 +1,6 @@
|
|||
@interface MWMInputValidator : NSObject
|
||||
|
||||
- (BOOL)validateInput:(UITextField *)input;
|
||||
- (BOOL)validateString:(NSString *)string;
|
||||
|
||||
@end
|
15
iphone/Maps/Classes/InputValidators/MWMInputValidator.mm
Normal file
15
iphone/Maps/Classes/InputValidators/MWMInputValidator.mm
Normal file
|
@ -0,0 +1,15 @@
|
|||
#import "MWMInputValidator.h"
|
||||
|
||||
@implementation MWMInputValidator
|
||||
|
||||
- (BOOL)validateInput:(UITextField *)input
|
||||
{
|
||||
return [self validateString:input.text];
|
||||
}
|
||||
|
||||
- (BOOL)validateString:(NSString *)string
|
||||
{
|
||||
return YES;
|
||||
}
|
||||
|
||||
@end
|
|
@ -0,0 +1,7 @@
|
|||
#import "MWMInputValidator.h"
|
||||
|
||||
@interface MWMInputValidatorFactory : NSObject
|
||||
|
||||
+ (MWMInputValidator *)validator:(NSString *)validator;
|
||||
|
||||
@end
|
|
@ -0,0 +1,20 @@
|
|||
#import "MWMInputEmailValidator.h"
|
||||
#import "MWMInputLoginValidator.h"
|
||||
#import "MWMInputPasswordValidator.h"
|
||||
#import "MWMInputValidator.h"
|
||||
#import "MWMInputValidatorFactory.h"
|
||||
|
||||
@implementation MWMInputValidatorFactory
|
||||
|
||||
+ (MWMInputValidator *)validator:(NSString *)validator
|
||||
{
|
||||
if ([validator isEqualToString:[MWMInputLoginValidator className]])
|
||||
return [[MWMInputLoginValidator alloc] init];
|
||||
if ([validator isEqualToString:[MWMInputPasswordValidator className]])
|
||||
return [[MWMInputPasswordValidator alloc] init];
|
||||
if ([validator isEqualToString:[MWMInputEmailValidator className]])
|
||||
return [[MWMInputEmailValidator alloc] init];
|
||||
return [[MWMInputValidator alloc] init];
|
||||
}
|
||||
|
||||
@end
|
Loading…
Add table
Reference in a new issue