libs-base/Source/NSDateFormatter.m
Sheldon Gill 8b1ef1ab48 Declare module private things static.
More fixing string encodings


git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/branches/mswin-ng@23902 72102866-910b-0410-8b05-ffd578937521
2006-10-18 05:14:04 +00:00

148 lines
3.4 KiB
Objective-C

/** Implementation of NSDateFormatter class
Copyright (C) 1998 Free Software Foundation, Inc.
Written by: Richard Frith-Macdonald <richard@brainstorm.co.uk>
Created: December 1998
This file is part of the GNUstep Base Library.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA 02111 USA.
<title>NSDateFormatter class reference</title>
$Date$ $Revision$
*/
#include "config.h"
#include "Foundation/NSDate.h"
#include "Foundation/NSCalendarDate.h"
#include "Foundation/NSTimeZone.h"
#include "Foundation/NSFormatter.h"
#include "Foundation/NSDateFormatter.h"
#include "Foundation/NSString.h"
#include "Foundation/NSCoder.h"
@implementation NSDateFormatter
- (BOOL) allowsNaturalLanguage
{
return _allowsNaturalLanguage;
}
- (NSAttributedString*) attributedStringForObjectValue: (id)anObject
withDefaultAttributes: (NSDictionary*)attr
{
return nil;
}
- (id) copyWithZone: (NSZone*)zone
{
NSDateFormatter *other = (id)NSCopyObject(self, 0, zone);
IF_NO_GC(RETAIN(other->_dateFormat));
return other;
}
- (NSString*) dateFormat
{
return _dateFormat;
}
- (void) dealloc
{
RELEASE(_dateFormat);
[super dealloc];
}
- (NSString*) editingStringForObjectValue: (id)anObject
{
return [self stringForObjectValue: anObject];
}
- (void) encodeWithCoder: (NSCoder*)aCoder
{
[aCoder encodeValuesOfObjCTypes: "@C", &_dateFormat, &_allowsNaturalLanguage];
}
- (BOOL) getObjectValue: (id*)anObject
forString: (NSString*)string
errorDescription: (NSString**)error
{
NSCalendarDate *d;
d = [NSCalendarDate dateWithString: string calendarFormat: _dateFormat];
if (d == nil)
{
if (_allowsNaturalLanguage)
{
d = [NSCalendarDate dateWithNaturalLanguageString: string];
}
if (d == nil)
{
if (error)
{
*error = @"Couldn't convert to date";
}
return NO;
}
}
if (anObject)
{
*anObject = d;
}
return YES;
}
- (id) initWithCoder: (NSCoder*)aCoder
{
[aCoder decodeValuesOfObjCTypes: "@C", &_dateFormat, &_allowsNaturalLanguage];
return self;
}
- (id) initWithDateFormat: (NSString *)format
allowNaturalLanguage: (BOOL)flag
{
_dateFormat = [format copy];
_allowsNaturalLanguage = flag;
return self;
}
- (BOOL) isPartialStringValid: (NSString*)partialString
newEditingString: (NSString**)newString
errorDescription: (NSString**)error
{
if (newString)
{
*newString = nil;
}
if (error)
{
*error = nil;
}
return YES;
}
- (NSString*) stringForObjectValue: (id)anObject
{
if ([anObject isKindOfClass: [NSDate class]] == NO)
{
return nil;
}
return [anObject descriptionWithCalendarFormat: _dateFormat
timeZone: [NSTimeZone defaultTimeZone]
locale: nil];
}
@end