diff --git a/Strings/Config.h b/Strings/Config.h index f675c91..04d5278 100644 --- a/Strings/Config.h +++ b/Strings/Config.h @@ -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/" diff --git a/Strings/ZFStringsConverter.m b/Strings/ZFStringsConverter.m index 5a39188..ca01bc6 100644 --- a/Strings/ZFStringsConverter.m +++ b/Strings/ZFStringsConverter.m @@ -94,7 +94,6 @@ - (NSArray *)translationsForStringsAtURL:(NSURL *)stringsURL { if (!stringsURL) return nil; - NSMutableArray *translation = [NSMutableArray array]; NSStringEncoding encoding; NSError *error; @@ -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; } @@ -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; } diff --git a/Strings/ZFTranslationFile.m b/Strings/ZFTranslationFile.m index 6d3e0ac..8e79d63 100644 --- a/Strings/ZFTranslationFile.m +++ b/Strings/ZFTranslationFile.m @@ -197,7 +197,7 @@ - (void)fillGaps { }]; if (!line) { - NSLog(@"No avlid line found for %@", key); + NSLog(@"No valid line found for %@", key); return; } diff --git a/Strings/ZFTranslationLine.h b/Strings/ZFTranslationLine.h index b9ddf13..43286ea 100644 --- a/Strings/ZFTranslationLine.h +++ b/Strings/ZFTranslationLine.h @@ -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;