Skip to content

Commit

Permalink
GCAge/GCDate: formatters, displaystrings
Browse files Browse the repository at this point in the history
  • Loading branch information
mikkelee committed Apr 27, 2012
1 parent 9b86142 commit 37de2a2
Show file tree
Hide file tree
Showing 4 changed files with 103 additions and 26 deletions.
36 changes: 33 additions & 3 deletions Gedcom/GCAge.m
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ - (NSString *)gedcomString
{
NSString *months = @"";
if ([[self ageComponents] month] >= 1) {
months = [NSString stringWithFormat:@" %@", [[self ageComponents] month]];
months = [NSString stringWithFormat:@" %@m", [[self ageComponents] month]];
}

NSString *days = @"";
Expand All @@ -72,6 +72,21 @@ - (NSString *)gedcomString
return [NSString stringWithFormat:@"%dy%@%@", [[self ageComponents] year], months, days];
}

- (NSString *)displayString
{
NSString *months = @"";
if ([[self ageComponents] month] >= 1) {
months = [NSString stringWithFormat:@", %@ months", [[self ageComponents] month]];
}

NSString *days = @"";
if ([[self ageComponents] day] >= 1) {
days = [NSString stringWithFormat:@", %d days", [[self ageComponents] day]];
}

return [NSString stringWithFormat:@"%d years%@%@", [[self ageComponents] year], months, days];
}

- (GCSimpleAge *)refAge
{
return self;
Expand Down Expand Up @@ -123,6 +138,11 @@ - (NSString *)gedcomString
return [NSString stringWithFormat:@"%@ %@", GCAgeQualifier_toString[[self qualifier]], [self age]];
}

- (NSString *)displayString
{
return [self gedcomString];
}

- (GCSimpleAge *)refAge
{
return [[self age] refAge];
Expand All @@ -143,16 +163,21 @@ @interface GCAgeKeyword : GCAge

@implementation GCAgeKeyword

-(NSString *)description
- (NSString *)description
{
return [NSString stringWithFormat:@"[GCAgeKeyword '%@']", [self keyword]];
}

-(NSString *)gedcomString
- (NSString *)gedcomString
{
return [self keyword];
}

- (NSString *)displayString
{
return [[self keyword] capitalizedString];
}

/*
CHILD = age < 8 years
INFANT = age < 1 year
Expand Down Expand Up @@ -205,6 +230,11 @@ -(NSString *)gedcomString
return [self string];
}

- (NSString *)displayString
{
return [self gedcomString];
}

- (GCSimpleAge *)refAge
{
GCSimpleAge *m = [[GCSimpleAge alloc] init];
Expand Down
4 changes: 2 additions & 2 deletions Gedcom/GCAgeFormatter.m
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ - (NSString *)editingStringForObjectValue:(id)anObject
return nil;
}

return [self stringForObjectValue:anObject];
return [anObject gedcomString];
}

- (NSString *)stringForObjectValue:(id)anObject;
Expand All @@ -26,7 +26,7 @@ - (NSString *)stringForObjectValue:(id)anObject;
return nil;
}

return [anObject gedcomString];
return [anObject displayString];
}

- (BOOL)getObjectValue:(id *)outVal forString:(NSString *)string errorDescription:(NSString **)error
Expand Down
73 changes: 60 additions & 13 deletions Gedcom/GCDate.m
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,11 @@ - (NSString *)gedcomString
return [NSString stringWithFormat:@"%@%@%04d", day, month, [[self dateComponents] year]];
}

- (NSString *)displayString
{
return [self gedcomString]; //TODO format according to user settings...
}

- (NSDate *)minDate
{
return [[self calendar] dateFromComponents:[self dateComponents]];
Expand Down Expand Up @@ -124,16 +129,21 @@ @interface GCDatePhrase : GCDate

@implementation GCDatePhrase

-(NSString *)description
- (NSString *)description
{
return [NSString stringWithFormat:@"[GCDatePhrase '%@']", [self phrase]];
}

-(NSString *)gedcomString
- (NSString *)gedcomString
{
return [NSString stringWithFormat:@"(%@)", [self phrase]];
}

- (NSString *)displayString
{
return [self gedcomString];
}

- (NSCalendar *)calendar
{
return nil;
Expand Down Expand Up @@ -203,16 +213,21 @@ @interface GCApproximateDate : GCAttributedDate

@implementation GCApproximateDate

-(NSString *)description
- (NSString *)description
{
return [NSString stringWithFormat:@"[GCApproximateDate '%@' %@]", [self dateType], [self simpleDate]];
}

-(NSString *)gedcomString
- (NSString *)gedcomString
{
return [NSString stringWithFormat:@"%@ %@", [self dateType], [[self simpleDate] gedcomString]];
}

- (NSString *)displayString
{
return [NSString stringWithFormat:@"~ %@", [[self simpleDate] displayString]];
}

@synthesize dateType;

@end
Expand All @@ -227,16 +242,21 @@ @interface GCInterpretedDate : GCAttributedDate

@implementation GCInterpretedDate

-(NSString *)description
- (NSString *)description
{
return [NSString stringWithFormat:@"[GCInterpretedDate %@ %@]", [self simpleDate], [self datePhrase]];
}

-(NSString *)gedcomString
- (NSString *)gedcomString
{
return [NSString stringWithFormat:@"INT %@ (%@)]", [[self simpleDate] gedcomString], [[self datePhrase] gedcomString]];
}

- (NSString *)displayString
{
return [NSString stringWithFormat:@"\"%@\" (%@)]", [[self simpleDate] displayString], [[self datePhrase] displayString]];
}

@synthesize datePhrase;

@end
Expand Down Expand Up @@ -283,24 +303,24 @@ - (NSCalendar *)calendar
}
}

-(GCSimpleDate *)dateA
- (GCSimpleDate *)dateA
{
return _dateA;
}

-(void)setDateA:(GCSimpleDate *)dateA
- (void)setDateA:(GCSimpleDate *)dateA
{
NSParameterAssert(dateA == nil || _dateB == nil || [[dateA calendar] isEqual:[_dateB calendar]]);

_dateA = dateA;
}

-(GCSimpleDate *)dateB
- (GCSimpleDate *)dateB
{
return _dateB;
}

-(void)setDateB:(GCSimpleDate *)dateB
- (void)setDateB:(GCSimpleDate *)dateB
{
NSParameterAssert(dateB == nil || _dateA == nil || [[_dateA calendar] isEqual:[dateB calendar]]);

Expand Down Expand Up @@ -345,7 +365,18 @@ - (NSString *)gedcomString
} else if ([self dateB] == nil) {
return [NSString stringWithFormat:@"FROM %@", [[self dateA] gedcomString]];
} else {
return [NSString stringWithFormat:@"FROM %@ TO %@", [self dateA], [self dateB]];
return [NSString stringWithFormat:@"FROM %@ TO %@", [[self dateA] gedcomString], [[self dateB] gedcomString]];
}
}

- (NSString *)displayString
{
if ([self dateA] == nil) {
return [NSString stringWithFormat:@"? – %@", [[self dateB] displayString]];
} else if ([self dateB] == nil) {
return [NSString stringWithFormat:@"%@ – ?", [[self dateA] displayString]];
} else {
return [NSString stringWithFormat:@"%@%@", [[self dateA] displayString], [[self dateB] displayString]];
}
}

Expand Down Expand Up @@ -381,6 +412,17 @@ - (NSString *)gedcomString
}
}

- (NSString *)displayString
{
if ([self dateA] == nil) {
return [NSString stringWithFormat:@"< %@", [[self dateB] displayString]];
} else if ([self dateB] == nil) {
return [NSString stringWithFormat:@"> %@", [[self dateA] displayString]];
} else {
return [NSString stringWithFormat:@"%@%@", [[self dateA] displayString], [[self dateB] displayString]];
}
}

@end

#pragma mark GCInvalidDate
Expand All @@ -394,16 +436,21 @@ @interface GCInvalidDate : GCDate

@implementation GCInvalidDate

-(NSString *)description
- (NSString *)description
{
return [NSString stringWithFormat:@"[GCInvalidDate '%@']", [self string]];
}

-(NSString *)gedcomString
- (NSString *)gedcomString
{
return [self string];
}

- (NSString *)displayString
{
return [self gedcomString];
}

- (GCSimpleDate *)refDate
{
return nil;
Expand Down
16 changes: 8 additions & 8 deletions Gedcom/GCDateFormatter.m
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,12 @@ @implementation GCDateFormatter

- (NSString *)editingStringForObjectValue:(id)date
{
return [self stringForObjectValue:date];
if (![date isKindOfClass:[GCDate class]]) {
NSLog(@"date was wrong class: %@", [date className]);
return nil;
}

return [date gedcomString];
}

- (NSString *)stringForObjectValue:(id)date;
Expand All @@ -23,14 +28,9 @@ - (NSString *)stringForObjectValue:(id)date;
return nil;
}

return [date gedcomString]; //TODO '<' instead of 'BEF' etc?
return [date displayString];
}
/*
- (NSAttributedString *)attributedStringForObjectValue:(id)date withDefaultAttributes:(NSDictionary *)attributes
{
return [[NSAttributedString alloc] initWithString:[self editingStringForObjectValue:date]]; //TODO
}
*/

- (BOOL)getObjectValue:(id *)outVal forString:(NSString *)string errorDescription:(NSString **)error
{
BOOL result = NO;
Expand Down

0 comments on commit 37de2a2

Please sign in to comment.