Skip to content
This repository has been archived by the owner on Mar 7, 2021. It is now read-only.

Commit

Permalink
Merge pull request #521 from aminiz/master
Browse files Browse the repository at this point in the history
Improve/decimal separator based on locale
  • Loading branch information
3lvis committed May 11, 2016
2 parents 0f79829 + bf9694d commit 05a771b
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 4 deletions.
4 changes: 3 additions & 1 deletion Source/Formatters/FORMFloatFormatter.m
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,9 @@ - (NSString *)formatString:(NSString *)string reverse:(BOOL)reverse {
string = [super formatString:string reverse:reverse];
if (!string) return nil;

if (reverse) {
NSString *decimalSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator];

if (reverse || [decimalSeparator isEqualToString:@"."]) {
return [string stringByReplacingOccurrencesOfString:@"," withString:@"."];
} else {
return [string stringByReplacingOccurrencesOfString:@"." withString:@","];
Expand Down
8 changes: 5 additions & 3 deletions Source/Input Validators/FORMFloatInputValidator.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@ - (BOOL)validateReplacementString:(NSString *)string withText:(NSString *)text w

if (!valid) return valid;

NSString *decimalSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleDecimalSeparator];

BOOL hasDelimiter = ([text hyp_containsString:@","] || [text hyp_containsString:@"."]);
BOOL stringIsNilOrComma = (!string || [string isEqualToString:@","]);
BOOL stringIsNilOrDecimalSeparator = (!string || [string isEqualToString:decimalSeparator]);

if (hasDelimiter && stringIsNilOrComma) return NO;
if (hasDelimiter && stringIsNilOrDecimalSeparator) return NO;

NSCharacterSet *floatSet = [NSCharacterSet characterSetWithCharactersInString:@"1234567890,"];
NSCharacterSet *floatSet = [NSCharacterSet characterSetWithCharactersInString: [NSString stringWithFormat:@"1234567890%@", decimalSeparator]];
NSCharacterSet *stringSet = [NSCharacterSet characterSetWithCharactersInString:string];

return [floatSet isSupersetOfSet:stringSet];
Expand Down

0 comments on commit 05a771b

Please sign in to comment.