diff --git a/SOPE/NGCards/CardGroup.h b/SOPE/NGCards/CardGroup.h index 3108f8b93..6800f0769 100644 --- a/SOPE/NGCards/CardGroup.h +++ b/SOPE/NGCards/CardGroup.h @@ -50,6 +50,7 @@ - (void) addChildren: (NSArray *) someChildren; - (NSArray *) children; +- (CardElement *) firstChildWithTag: (NSString *) aTag; - (NSArray *) childrenWithTag: (NSString *) aTag; - (NSArray *) childrenWithAttribute: (NSString *) anAttribute havingValue: (NSString *) aValue; @@ -64,7 +65,6 @@ types: (NSArray *) someTypes singleValue: (NSString *) aValue; - - (CardGroup *) groupWithClass: (Class) groupClass; - (void) setChildrenAsCopy: (NSMutableArray *) someChildren; diff --git a/SOPE/NGCards/CardGroup.m b/SOPE/NGCards/CardGroup.m index b7b60ca71..ae375d46b 100644 --- a/SOPE/NGCards/CardGroup.m +++ b/SOPE/NGCards/CardGroup.m @@ -232,6 +232,33 @@ static NGCardsSaxHandler *sax = nil; [self addChild: aChild]; } +- (CardElement *) firstChildWithTag: (NSString *) aTag; +{ + Class mappedClass; + CardElement *child, *mappedChild; + NSArray *existing; + + existing = [self childrenWithTag: aTag]; + if ([existing count]) + { + child = [existing objectAtIndex: 0]; + mappedClass = [self classForTag: [aTag uppercaseString]]; + if (mappedClass) + { + if ([child isKindOfClass: [CardGroup class]]) + mappedChild = [(CardGroup *) child groupWithClass: mappedClass]; + else + mappedChild = [child elementWithClass: mappedClass]; + } + else + mappedChild = child; + } + else + mappedChild = nil; + + return mappedChild; +} + - (void) addChildren: (NSArray *) someChildren { CardElement *currentChild; diff --git a/SOPE/NGCards/ChangeLog b/SOPE/NGCards/ChangeLog index e5dea6615..6b01b6497 100644 --- a/SOPE/NGCards/ChangeLog +++ b/SOPE/NGCards/ChangeLog @@ -1,3 +1,7 @@ +2007-02-15 Wolfgang Sourdeau + + * CardGroup.m ([CardGroup -firstChildWithTag:aTag]): new method. + 2007-02-09 Wolfgang Sourdeau * CardGroup.m ([CardGroup +cardParser]): find the correct parser