2019-09-16 02:17:28 +00:00
|
|
|
/* Definition of class NSPersonNameComponents
|
|
|
|
Copyright (C) 2019 Free Software Foundation, Inc.
|
|
|
|
|
|
|
|
Implemented by: Gregory Casamento <greg.casamento@gmail.com>
|
|
|
|
Date: Sep 2019
|
|
|
|
|
|
|
|
This file is part of the GNUstep Library.
|
|
|
|
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU Lesser 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 Lesser 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.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#import "Foundation/NSString.h"
|
2019-09-17 21:41:18 +00:00
|
|
|
#import "Foundation/NSAttributedString.h"
|
2019-09-16 02:17:28 +00:00
|
|
|
#import "Foundation/NSPersonNameComponents.h"
|
2019-09-17 21:41:18 +00:00
|
|
|
#import "Foundation/NSPersonNameComponentsFormatter.h"
|
2019-09-16 02:17:28 +00:00
|
|
|
|
|
|
|
@implementation NSPersonNameComponentsFormatter
|
|
|
|
|
2019-09-17 18:56:39 +00:00
|
|
|
- (instancetype) init
|
|
|
|
{
|
|
|
|
self = [super init];
|
|
|
|
if(self != nil)
|
|
|
|
{
|
|
|
|
_phonetic = NO;
|
|
|
|
_style = NSPersonNameComponentsFormatterStyleDefault;
|
2019-09-17 21:41:18 +00:00
|
|
|
_nameOptions = 0L;
|
2019-09-17 18:56:39 +00:00
|
|
|
}
|
|
|
|
return self;
|
|
|
|
}
|
|
|
|
|
2019-09-17 21:41:18 +00:00
|
|
|
- (void) _setNameOptions: (NSPersonNameComponentsFormatterOptions)opts
|
|
|
|
{
|
|
|
|
_nameOptions = opts;
|
|
|
|
}
|
|
|
|
|
2019-09-16 02:17:28 +00:00
|
|
|
// Designated init...
|
|
|
|
+ (NSString *) localizedStringFromPersonNameComponents: (NSPersonNameComponents *)components
|
|
|
|
style: (NSPersonNameComponentsFormatterStyle)nameFormatStyle
|
|
|
|
options: (NSPersonNameComponentsFormatterOptions)nameOptions
|
|
|
|
{
|
2019-09-17 21:41:18 +00:00
|
|
|
NSPersonNameComponentsFormatter *fmt = [[NSPersonNameComponentsFormatter alloc] init];
|
|
|
|
[fmt setStyle: nameFormatStyle];
|
|
|
|
[fmt _setNameOptions: nameOptions];
|
|
|
|
return [fmt stringForObjectValue: components] ;
|
2019-09-17 18:56:39 +00:00
|
|
|
}
|
|
|
|
|
2019-09-16 02:17:28 +00:00
|
|
|
// Setters
|
|
|
|
- (NSPersonNameComponentsFormatterStyle) style
|
|
|
|
{
|
2019-09-17 18:56:39 +00:00
|
|
|
return _style;
|
2019-09-16 02:17:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (void) setStyle: (NSPersonNameComponentsFormatterStyle)style
|
|
|
|
{
|
2019-09-17 18:56:39 +00:00
|
|
|
_style = style;
|
2019-09-16 02:17:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (BOOL) isPhonetic
|
|
|
|
{
|
2019-09-17 18:56:39 +00:00
|
|
|
return _phonetic;
|
2019-09-16 02:17:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (void) setPhonetic: (BOOL)flag
|
|
|
|
{
|
2019-09-17 18:56:39 +00:00
|
|
|
_phonetic = flag;
|
2019-09-16 02:17:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// Convenience methods...
|
|
|
|
- (NSString *) stringFromPersonNameComponents: (NSPersonNameComponents *)components
|
|
|
|
{
|
2019-09-17 18:56:39 +00:00
|
|
|
NSString *result = nil;
|
|
|
|
|
|
|
|
switch (_style)
|
|
|
|
{
|
|
|
|
}
|
|
|
|
|
|
|
|
return result;
|
2019-09-16 02:17:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (NSAttributedString *) annotatedStringFromPersonNameComponents: (NSPersonNameComponents *)components
|
|
|
|
{
|
2019-09-17 21:41:18 +00:00
|
|
|
return AUTORELEASE([[NSAttributedString alloc] initWithString:
|
|
|
|
[self stringFromPersonNameComponents: components]]);
|
2019-09-16 02:17:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
- (NSPersonNameComponents *) personNameComponentsFromString: (NSString *)string
|
|
|
|
{
|
2019-09-17 21:41:18 +00:00
|
|
|
NSPersonNameComponents *pnc = AUTORELEASE([[NSPersonNameComponents alloc] init]);
|
2019-09-17 18:56:39 +00:00
|
|
|
|
2019-09-17 21:41:18 +00:00
|
|
|
return pnc;
|
2019-09-16 02:17:28 +00:00
|
|
|
}
|
|
|
|
|
2019-09-17 21:41:18 +00:00
|
|
|
- (BOOL) getObjectValue: (id *)obj
|
|
|
|
forString: (NSString *)string
|
|
|
|
errorDescription: (NSString **)error
|
2019-09-16 02:17:28 +00:00
|
|
|
{
|
|
|
|
return NO;
|
|
|
|
}
|
|
|
|
|
2019-09-17 21:41:18 +00:00
|
|
|
- (NSString *)stringForObjectValue: (id)obj
|
|
|
|
{
|
|
|
|
NSPersonNameComponents *pnc = (NSPersonNameComponents *)obj;
|
|
|
|
return [self stringFromPersonNameComponents: pnc];
|
|
|
|
}
|
|
|
|
|
2019-09-16 02:17:28 +00:00
|
|
|
@end
|
|
|
|
|
|
|
|
// components for attributed strings;
|
|
|
|
NSString * const NSPersonNameComponentKey = @"NSPersonNameComponentKey";
|
|
|
|
NSString * const NSPersonNameComponentGivenName = @"NSPersonNameComponentGivenName";
|
|
|
|
NSString * const NSPersonNameComponentFamilyName = @"NSPersonNameComponentFamilyName";
|
|
|
|
NSString * const NSPersonNameComponentMiddleName = @"NSPersonNameComponentMiddleName";
|
|
|
|
NSString * const NSPersonNameComponentPrefix = @"NSPersonNameComponentPrefix";
|
|
|
|
NSString * const NSPersonNameComponentSuffix = @"NSPersonNameComponentSuffix";
|
|
|
|
NSString * const NSPersonNameComponentNickname = @"NSPersonNameComponentNickname";
|
|
|
|
NSString * const NSPersonNameComponentDelimiter = @"NSPersonNameComponentDelimiter";
|