//--------------------------------------------------------------------------------------- // EDSLDynamicStringElement.m created by erik on Thu Jun 13 2002 // @(#)$Id: EDSLDynamicStringElement.m,v 1.1.1.1 2002-08-19 00:58:43 erik Exp $ // // Copyright (c) 2002 by Erik Doernenburg. All rights reserved. // // Permission to use, copy, modify and distribute this software and its documentation // is hereby granted, provided that both the copyright notice and this permission // notice appear in all copies of the software, derivative works or modified versions, // and any portions thereof, and that both notices appear in supporting documentation, // and that credit is given to Erik Doernenburg in all documents and publicity // pertaining to direct or indirect use of this code or its derivatives. // // THIS IS EXPERIMENTAL SOFTWARE AND IT IS KNOWN TO HAVE BUGS, SOME OF WHICH MAY HAVE // SERIOUS CONSEQUENCES. THE COPYRIGHT HOLDER ALLOWS FREE USE OF THIS SOFTWARE IN ITS // "AS IS" CONDITION. THE COPYRIGHT HOLDER DISCLAIMS ANY LIABILITY OF ANY KIND FOR ANY // DAMAGES WHATSOEVER RESULTING DIRECTLY OR INDIRECTLY FROM THE USE OF THIS SOFTWARE // OR OF ANY DERIVATIVE WORK. //--------------------------------------------------------------------------------------- #import #import "EDStyleSheetContext.h" #import "EDSLDynamicStringElement.h" //--------------------------------------------------------------------------------------- @implementation EDSLDynamicStringElement //--------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------- // PROCESSING //--------------------------------------------------------------------------------------- - (void)appendToString:(NSMutableString *)buffer inContext:(EDStyleSheetContext *)context { NSString *keyPath, *stringValue, *format; id value; keyPath = [self valueForAttribute:@"name"]; if((value = [context valueForVariable:keyPath]) == nil) return; if([value respondsToSelector:@selector(appendToString:inContext:)]) { [value appendToString:buffer inContext:context]; } else if([value isKindOfClass:[NSCalendarDate class]]) { if(((format = [context valueForVariable:@"dateformat"]) == nil) || ([format isEqual:@""])) format = [DEFAULTS stringForKey:NSShortDateFormatString]; stringValue = [value descriptionWithCalendarFormat:format]; [buffer appendString:stringValue]; } else if([value isKindOfClass:[NSString class]]) { [buffer appendString:value]; [context setShouldOmitSpaces:NO]; } else { [buffer appendString:[value description]]; } } //--------------------------------------------------------------------------------------- @end //---------------------------------------------------------------------------------------