Skip to content

Commit

Permalink
working with ranges and orders
Browse files Browse the repository at this point in the history
  • Loading branch information
cescofry committed Jul 10, 2013
1 parent 1a105d2 commit 143d438
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 26 deletions.
2 changes: 1 addition & 1 deletion Strings/Config.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
#pragma mark - formats
#pragma mark iOS

#define ZF_IOS_COMMENT_REGEX @"/%*(.|[\r\n])*?%*/"
#define ZF_IOS_COMMENT_REGEX @"/\\*((.|[\r\n])*?)\\*/"
#define ZF_IOS_REGEX @"\"([a-zA-Z0-9._]*)\"[ ]*=[ ]*\"(.+?)\"[ ]*;"
#define ZF_FORMAT_IOS_REGEX @"%(.?\\d?[@a-z])"
#define ZF_LANG_DIR_IOS_REGEX @"/([a-z]{2}).lproj/"
Expand Down
49 changes: 25 additions & 24 deletions Strings/ZFStringsConverter.m
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,6 @@ - (NSArray *)translationsForStringsAtURL:(NSURL *)stringsURL {

if (!stringsURL) return nil;

NSMutableArray *translation = [NSMutableArray array];

NSStringEncoding encoding;
NSError *error;
Expand All @@ -107,34 +106,36 @@ - (NSArray *)translationsForStringsAtURL:(NSURL *)stringsURL {

NSArray *matches = [regEx matchesInString:stringsString options:NSMatchingReportCompletion range:NSMakeRange(0, stringsString.length)];
NSArray *comments = [commentRegEx matchesInString:stringsString options:NSMatchingReportCompletion range:NSMakeRange(0, stringsString.length)];

matches = [[matches arrayByAddingObjectsFromArray:comments] sortedArrayUsingComparator:^NSComparisonResult(NSTextCheckingResult *obj1, NSTextCheckingResult *obj2) {
return (obj1.range.location < obj2.range.location)? NSOrderedAscending : NSOrderedDescending;
}];

NSMutableArray *translations = [NSMutableArray array];

[matches enumerateObjectsUsingBlock:^(NSTextCheckingResult *match, NSUInteger idx, BOOL *stop) {
ZFTranslationLine *line = [ZFTranslationLine line];
if ([match numberOfRanges] > 2) {
NSString *key = [stringsString substringWithRange:[match rangeAtIndex:1]];
NSString *value = [stringsString substringWithRange:[match rangeAtIndex:2]];

[line setKey:key];
[line setValue:value];
[line setPosition:idx];
}
else {
NSString *value = [stringsString substringWithRange:[match range]];
[line setKey:[NSString stringWithFormat:@"*_comment_%ld", idx]];
[line setValue:value];
[line setPosition:idx];
[line setType:ZFTranslationLineTypeComment];
}

[translation addObject:line];
NSString *key = [stringsString substringWithRange:[match rangeAtIndex:1]];
NSString *value = [stringsString substringWithRange:[match rangeAtIndex:2]];

[line setKey:key];
[line setValue:value];
[line setPosition:idx];
[line setRange:[match rangeAtIndex:0]];

[translations addObject:line];
}];

return (NSArray *)translation;
[comments enumerateObjectsUsingBlock:^(NSTextCheckingResult *match, NSUInteger idx, BOOL *stop) {
ZFTranslationLine *line = [ZFTranslationLine line];

NSString *value = [stringsString substringWithRange:[match rangeAtIndex:1]];
[line setKey:[NSString stringWithFormat:@"*_comment_%ld", idx]];
[line setValue:value];
[line setPosition:idx];
[line setType:ZFTranslationLineTypeComment];
[line setRange:[match rangeAtIndex:0]];

[translations addObject:line];
}];

return (NSArray *)translations;

}

Expand All @@ -155,7 +156,7 @@ - (NSString *)stringsStringFromTranslations:(NSArray *)translations {
[translations enumerateObjectsUsingBlock:^(ZFTranslationLine *line, NSUInteger idx, BOOL *stop) {

if (line.type == ZFTranslationLineTypeComment) {
[stringsString appendFormat:@"/** %@ */", line.value];
[stringsString appendFormat:@"/** %@ */\n", line.value];
return;
}

Expand Down
2 changes: 1 addition & 1 deletion Strings/ZFTranslationFile.m
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ - (void)fillGaps {
}];

if (!line) {
NSLog(@"No avlid line found for %@", key);
NSLog(@"No valid line found for %@", key);
return;
}

Expand Down
1 change: 1 addition & 0 deletions Strings/ZFTranslationLine.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ typedef enum {
@property (nonatomic, strong) NSString *value;
@property (nonatomic, assign) ZFTranslationLineType type;
@property (nonatomic, assign) NSUInteger position;
@property (nonatomic, assign) NSRange range;

+(ZFTranslationLine *)line;

Expand Down

0 comments on commit 143d438

Please sign in to comment.