// // // // Created by kimziv on 13-9-14. // #include "ChineseToPinyinResource.h" #include "HanyuPinyinOutputFormat.h" #include "PinyinFormatter.h" #include "PinyinHelper.h" #define HANYU_PINYIN @"Hanyu" #define WADEGILES_PINYIN @"Wade" #define MPS2_PINYIN @"MPSII" #define YALE_PINYIN @"Yale" #define TONGYONG_PINYIN @"Tongyong" #define GWOYEU_ROMATZYH @"Gwoyeu" @implementation PinyinHelper + (NSArray *)toHanyuPinyinStringArrayWithChar:(unichar)ch { return [PinyinHelper getUnformattedHanyuPinyinStringArrayWithChar:ch]; } + (NSArray *)toHanyuPinyinStringArrayWithChar:(unichar)ch withHanyuPinyinOutputFormat:(HanyuPinyinOutputFormat *)outputFormat { return [PinyinHelper getFormattedHanyuPinyinStringArrayWithChar:ch withHanyuPinyinOutputFormat:outputFormat]; } + (NSArray *)getFormattedHanyuPinyinStringArrayWithChar:(unichar)ch withHanyuPinyinOutputFormat:(HanyuPinyinOutputFormat *)outputFormat { NSMutableArray *pinyinStrArray =[NSMutableArray arrayWithArray:[PinyinHelper getUnformattedHanyuPinyinStringArrayWithChar:ch]]; if (nil != pinyinStrArray) { for (int i = 0; i < (int) [pinyinStrArray count]; i++) { [pinyinStrArray replaceObjectAtIndex:i withObject:[PinyinFormatter formatHanyuPinyinWithNSString: [pinyinStrArray objectAtIndex:i]withHanyuPinyinOutputFormat:outputFormat]]; } return pinyinStrArray; } else return nil; } + (NSArray *)getUnformattedHanyuPinyinStringArrayWithChar:(unichar)ch { return [[ChineseToPinyinResource getInstance] getHanyuPinyinStringArrayWithChar:ch]; } + (NSArray *)toTongyongPinyinStringArrayWithChar:(unichar)ch { return [PinyinHelper convertToTargetPinyinStringArrayWithChar:ch withPinyinRomanizationType: TONGYONG_PINYIN]; } + (NSArray *)toWadeGilesPinyinStringArrayWithChar:(unichar)ch { return [PinyinHelper convertToTargetPinyinStringArrayWithChar:ch withPinyinRomanizationType: WADEGILES_PINYIN]; } + (NSArray *)toMPS2PinyinStringArrayWithChar:(unichar)ch { return [PinyinHelper convertToTargetPinyinStringArrayWithChar:ch withPinyinRomanizationType: MPS2_PINYIN]; } + (NSArray *)toYalePinyinStringArrayWithChar:(unichar)ch { return [PinyinHelper convertToTargetPinyinStringArrayWithChar:ch withPinyinRomanizationType: YALE_PINYIN]; } + (NSArray *)convertToTargetPinyinStringArrayWithChar:(unichar)ch withPinyinRomanizationType:(NSString *)targetPinyinSystem { NSArray *hanyuPinyinStringArray = [PinyinHelper getUnformattedHanyuPinyinStringArrayWithChar:ch]; if (nil != hanyuPinyinStringArray) { NSMutableArray *targetPinyinStringArray = [NSMutableArray arrayWithCapacity:hanyuPinyinStringArray.count]; for (int i = 0; i < (int) [hanyuPinyinStringArray count]; i++) { } return targetPinyinStringArray; } else return nil; } + (NSArray *)toGwoyeuRomatzyhStringArrayWithChar:(unichar)ch { return [PinyinHelper convertToGwoyeuRomatzyhStringArrayWithChar:ch]; } + (NSArray *)convertToGwoyeuRomatzyhStringArrayWithChar:(unichar)ch { NSArray *hanyuPinyinStringArray = [PinyinHelper getUnformattedHanyuPinyinStringArrayWithChar:ch]; if (nil != hanyuPinyinStringArray) { NSMutableArray *targetPinyinStringArray =[NSMutableArray arrayWithCapacity:hanyuPinyinStringArray.count]; for (int i = 0; i < (int) [hanyuPinyinStringArray count]; i++) { } return targetPinyinStringArray; } else return nil; } + (NSString *)toHanyuPinyinStringWithNSString:(NSString *)str withHanyuPinyinOutputFormat:(HanyuPinyinOutputFormat *)outputFormat withNSString:(NSString *)seperater { NSMutableString *resultPinyinStrBuf = [[NSMutableString alloc] init]; for (int i = 0; i < str.length; i++) { NSString *mainPinyinStrOfChar = [PinyinHelper getFirstHanyuPinyinStringWithChar:[str characterAtIndex:i] withHanyuPinyinOutputFormat:outputFormat]; if (nil != mainPinyinStrOfChar) { [resultPinyinStrBuf appendString:mainPinyinStrOfChar]; if (i != [str length] - 1) { [resultPinyinStrBuf appendString:seperater]; } } else { [resultPinyinStrBuf appendFormat:@"%C",[str characterAtIndex:i]]; } } return resultPinyinStrBuf; } + (NSString *)getFirstHanyuPinyinStringWithChar:(unichar)ch withHanyuPinyinOutputFormat:(HanyuPinyinOutputFormat *)outputFormat { NSArray *pinyinStrArray = [PinyinHelper getFormattedHanyuPinyinStringArrayWithChar:ch withHanyuPinyinOutputFormat:outputFormat]; if ((nil != pinyinStrArray) && ((int) [pinyinStrArray count] > 0)) { return [pinyinStrArray objectAtIndex:0]; } else { return nil; } } - (id)init { return [super init]; } @end