Skip to content

Commit

Permalink
Fixes order of keys on FTLang.
Browse files Browse the repository at this point in the history
  • Loading branch information
cescofry committed Jul 10, 2013
1 parent 143d438 commit defd336
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 17 deletions.
6 changes: 3 additions & 3 deletions HiperStrings/Controllers/ZFFileDetailController.m
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ - (void)setLangFile:(ZFTranslationFile *)langFile {
self.columns = [[NSArray arrayWithObject:KEY_KEY] arrayByAddingObjectsFromArray:[_langFile allLanguages]];
self.keys = (self.columns.count > 1)? [self.langFile allKeys] : [NSArray array];


NSMutableArray *addCol = [self.columns mutableCopy];
NSArray *columns = [self.tableView.tableColumns copy];
[columns enumerateObjectsUsingBlock:^(NSTableColumn *column, NSUInteger idx, BOOL *stop) {
Expand Down Expand Up @@ -64,11 +63,12 @@ - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView {
}

- (id)tableView:(NSTableView *)tableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row {
if ([tableColumn.identifier isEqualToString:KEY_KEY]) return [self.keys objectAtIndex:row];
NSString *key = [self.keys objectAtIndex:row];
if ([tableColumn.identifier isEqualToString:KEY_KEY]) return key;
else {
NSArray *translation = [self.langFile translationsByType:(self.segmentedControl.selectedSegment == 0)? ZFLangTypeIOS : ZFLangTypeAndorid andLanguageIdentifier:tableColumn.identifier];
ZFLangFile *lang = [translation lastObject];
return [[lang lineForKey:[self.keys objectAtIndex:row]] value];
return [[lang lineForKey:key] value];
}

//return [[self.rows objectForKey:tableColumn.identifier] objectForKey:[self.keys objectAtIndex:row]];
Expand Down
36 changes: 23 additions & 13 deletions Strings/ZFLangFile.m
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ - (id)initWithURL:(NSURL *)url {
NSArray *translations = (isIOS)? [converter translationsForStringsAtURL:url] : [converter translationsForXMLAtURL:url];

_translations = [NSMutableArray arrayWithArray:translations];
[self sortTranslations];
}
return self;

Expand Down Expand Up @@ -84,22 +85,14 @@ - (void)setUrl:(NSURL *)url {

#pragma mark - keys

- (void)extractKeys {
_keysAndComments = [self.translations valueForKey:@"key"];
if (!_keysAndComments) _keysAndComments = [NSArray array];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"NOT (self BEGINSWITH %@)", @"*"];
_allKeys = [self.keysAndComments filteredArrayUsingPredicate:predicate];
if (!_allKeys) _allKeys = [NSArray array];
}

- (NSArray *)keysAndComments {
if (!_keysAndComments) [self extractKeys];
if (!_keysAndComments) [self sortTranslations];
return _keysAndComments;
}

- (NSArray *)allKeys {
if (!_allKeys) [self extractKeys];
if (!_allKeys) [self sortTranslations];
return _allKeys;
}

Expand All @@ -112,18 +105,35 @@ - (ZFTranslationLine *)lineForKey:(NSString *)key {


- (void)addLine:(ZFTranslationLine *)line {

ZFTranslationLine *aline = [self lineForKey:line.key];
if (aline) return;

[self.translations addObject:line];
_isDirty = YES;

NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"position" ascending:YES];
[self.translations sortUsingDescriptors:@[descriptor]];
[self sortTranslations];
}

- (void)sortTranslations {
if (!self.translations || self.translations.count == 0) return;

[self.translations sortUsingComparator:^NSComparisonResult(ZFTranslationLine *obj1, ZFTranslationLine *obj2) {
if (obj1.range.location == obj2.range.location) return NSOrderedSame;
else return (obj1.range.location < obj2.range.location)? NSOrderedAscending : NSOrderedDescending;
}];

_keysAndComments = [self.translations valueForKey:@"key"];
if (!_keysAndComments) _keysAndComments = [NSArray array];

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"type != %d", ZFTranslationLineTypeComment];
_allKeys = [[self.translations filteredArrayUsingPredicate:predicate] valueForKey:@"key"];
if (!_allKeys) _allKeys = [NSArray array];

}

- (NSString *)description {
return [[super description] stringByAppendingFormat:@" %@ %d %@ %ld keys", self.fileName, self.type, self.language, (unsigned long)[self.keysAndComments count]];
return [[super description] stringByAppendingFormat:@" %@ %d %@ %ld keys", self.fileName, self.type, self.language, (unsigned long)[self.allKeys count]];
}


Expand Down
5 changes: 4 additions & 1 deletion Strings/ZFTranslationFile.m
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,10 @@ - (void)fillGaps {
if (iOSLangCount == 0 || androidLangCount == 0) self.conversionDriver = ZFTranslationFileConversionDriverSkip;
else self.conversionDriver = (iOSLangCount >= androidLangCount)? ZFTranslationFileConversionDriverIOS : ZFTranslationFileConversionDriverAndorid;

_allKeys = [allKeys sortedArrayUsingSelector:@selector(compare:)];
_allKeys = [allKeys sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
return [obj1 compare:obj2];
}];

_allLanguages = [allLanguages sortedArrayUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
if ([obj1 isEqualToString:FAV_LANG]) return NSOrderedAscending;
else if ([obj2 isEqualToString:FAV_LANG]) return NSOrderedDescending;
Expand Down

0 comments on commit defd336

Please sign in to comment.