/*
|
* Copyright 2012 ZXing authors
|
*
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
* you may not use this file except in compliance with the License.
|
* You may obtain a copy of the License at
|
*
|
* http://www.apache.org/licenses/LICENSE-2.0
|
*
|
* Unless required by applicable law or agreed to in writing, software
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
* See the License for the specific language governing permissions and
|
* limitations under the License.
|
*/
|
|
#import "ZXAddressBookParsedResult.h"
|
#import "ZXBizcardResultParser.h"
|
#import "ZXResult.h"
|
|
@implementation ZXBizcardResultParser
|
|
- (ZXParsedResult *)parse:(ZXResult *)result {
|
NSString *rawText = [ZXResultParser massagedText:result];
|
if (![rawText hasPrefix:@"BIZCARD:"]) {
|
return nil;
|
}
|
NSString *firstName = [[self class] matchSingleDoCoMoPrefixedField:@"N:" rawText:rawText trim:YES];
|
NSString *lastName = [[self class] matchSingleDoCoMoPrefixedField:@"X:" rawText:rawText trim:YES];
|
NSString *fullName = [self buildName:firstName lastName:lastName];
|
NSString *title = [[self class] matchSingleDoCoMoPrefixedField:@"T:" rawText:rawText trim:YES];
|
NSString *org = [[self class] matchSingleDoCoMoPrefixedField:@"C:" rawText:rawText trim:YES];
|
NSArray *addresses = [[self class] matchDoCoMoPrefixedField:@"A:" rawText:rawText trim:YES];
|
NSString *phoneNumber1 = [[self class] matchSingleDoCoMoPrefixedField:@"B:" rawText:rawText trim:YES];
|
NSString *phoneNumber2 = [[self class] matchSingleDoCoMoPrefixedField:@"M:" rawText:rawText trim:YES];
|
NSString *phoneNumber3 = [[self class] matchSingleDoCoMoPrefixedField:@"F:" rawText:rawText trim:YES];
|
NSString *email = [[self class] matchSingleDoCoMoPrefixedField:@"E:" rawText:rawText trim:YES];
|
|
return [ZXAddressBookParsedResult addressBookParsedResultWithNames:[self maybeWrap:fullName]
|
nicknames:nil
|
pronunciation:nil
|
phoneNumbers:[self buildPhoneNumbers:phoneNumber1 number2:phoneNumber2 number3:phoneNumber3]
|
phoneTypes:nil
|
emails:[self maybeWrap:email]
|
emailTypes:nil
|
instantMessenger:nil
|
note:nil
|
addresses:addresses
|
addressTypes:nil
|
org:org
|
birthday:nil
|
title:title
|
urls:nil
|
geo:nil];
|
}
|
|
- (NSArray *)buildPhoneNumbers:(NSString *)number1 number2:(NSString *)number2 number3:(NSString *)number3 {
|
NSMutableArray *numbers = [NSMutableArray arrayWithCapacity:3];
|
if (number1 != nil) {
|
[numbers addObject:number1];
|
}
|
if (number2 != nil) {
|
[numbers addObject:number2];
|
}
|
if (number3 != nil) {
|
[numbers addObject:number3];
|
}
|
NSUInteger size = [numbers count];
|
if (size == 0) {
|
return nil;
|
}
|
NSMutableArray *result = [NSMutableArray arrayWithCapacity:size];
|
for (int i = 0; i < size; i++) {
|
[result addObject:numbers[i]];
|
}
|
return result;
|
}
|
|
- (NSString *)buildName:(NSString *)firstName lastName:(NSString *)lastName {
|
if (firstName == nil) {
|
return lastName;
|
} else {
|
return lastName == nil ? firstName : [[firstName stringByAppendingString:@" "] stringByAppendingString:lastName];
|
}
|
}
|
|
@end
|