diff --git a/Examples/DictionaryKitExample/main.m b/Examples/DictionaryKitExample/main.m index f9d50d3..2942adb 100644 --- a/Examples/DictionaryKitExample/main.m +++ b/Examples/DictionaryKitExample/main.m @@ -26,7 +26,7 @@ int main(int argc, const char * argv[]) { @autoreleasepool { - TTTDictionary *dictionary = [TTTDictionary dictionaryNamed:DCSOxfordDictionaryOfEnglish]; + TTTDictionary *dictionary = [TTTDictionary dictionaryWithIdentifier:DCSDictionaryApple]; NSLog(@"%@\n", dictionary.name); NSString *term = @"apple"; diff --git a/README.md b/README.md index 06de7bd..f038c60 100644 --- a/README.md +++ b/README.md @@ -4,12 +4,19 @@ > This library accesses private OS X APIs, making it unsuitable for apps submitted to the App Store. +## Modifications + +This is a fork of the original [DictionaryKit](https://github.com/NSHipster/DictionaryKit). Here's a list of some notable things that have changed: + - Added/modified type information for a better Swift interop experience + - Swapped the API to use dictionary identifiers instead of names + - Added some additional QOL methods for making certain tasks easier/faster + ## Usage ```objective-c #import "DictionaryKit.h" -TTTDictionary *dictionary = [TTTDictionary dictionaryNamed:DCSOxfordDictionaryOfEnglish]; +TTTDictionary *dictionary = [TTTDictionary dictionaryWithIdentifier:DCSDictionaryApple]; NSLog(@"%@\n", dictionary.name); NSString *term = @"apple"; @@ -19,28 +26,90 @@ for (TTTDictionaryEntry *entry in [dictionary entriesForSearchTerm:term]) { ``` ## Available Dictionaries +These are the known dictionary options, which may or may not be available on all systems. + +| Constant | Identifier | Name | +| ------------------------------------------------- | ----------------------------------------- | ---------------------------------------------------------------------------------- | +| `DCSDictionaryNewOxfordAmerican` | `com.apple.dictionary.NOAD` | New Oxford American Dictionary | +| `DCSDictionaryPrismaDutch` | `com.apple.dictionary.nl.Prisma` | Prisma woordenboek Nederlands | +| `DCSDictionaryOxfordRussian` | `com.apple.dictionary.ru.oup` | Толковый словарь русского языка | +| `DCSDictionaryWisdomJapaneseEnglish` | `com.apple.dictionary.ja-en.WISDOM` | ウィズダム英和辞典 / ウィズダム和英辞典 | +| `DCSDictionaryOxfordUkrainianEnglish` | `com.apple.dictionary.uk-en.oup` | Українсько-Англійський Словник | +| `DCSDictionaryOxfordRussianEnglish` | `com.apple.dictionary.OxfordRussian` | Oxford Russian Dictionary - Русско-Английский • Англо-Русский | +| `DCSDictionaryOxfordPortugueseEnglish` | `com.apple.dictionary.pt-en.oup` | Oxford Portuguese Dictionary - Português-Inglês • Inglês-Português | +| `DCSDictionaryOxfordAmericanWritersThesaurus` | `com.apple.dictionary.OAWT` | Oxford American Writer’s Thesaurus | +| `DCSDictionaryNationalencyklopedinEnglishSwedish` | `com.apple.dictionary.sv-en.oup` | NE Nationalencyklopedin AB Professional English-Swedish / Svensk-Engelska | +| `DCSDictionaryOxfordPunjabiEnglish` | `com.apple.dictionary.pa-en.oup` | Oxford Punjabi Dictionaries - ਪੰਜਾਬੀ ਅੰਗਰੇਜ਼ੀ ਕੋਸ਼ • پنجابی انگریزی لغت | +| `DCSDictionaryOxfordPolishEnglish` | `com.apple.dictionary.pl-en.oup` | Oxford PWN Polish-English Dictionary / Wielki słownik polsko-angielski | +| `DCSDictionaryOxfordArabicEnglish` | `com.apple.dictionary.ar-en.oup` | Oxford Arabic Dictionary - عربي-إنجليزي • إنجليزي-عربي | +| `DCSDictionaryOxfordItalian` | `com.apple.dictionary.OxfordItalian` | Oxford Paravia Il Dizionario inglese - italiano/italiano - inglese | +| `DCSDictionaryLacVietVietnamese` | `com.apple.dictionary.vi-en.oup` | Từ điển Lạc Việt | +| `DCSDictionaryOxfordKazakhEnglish` | `com.apple.dictionary.kk-en.oup` | Оксфорд Қазақ Cөздігі | +| `DCSDictionaryDaijirinJapanese` | `com.apple.dictionary.ja.Daijirin` | スーパー大辞林 | +| `DCSDictionaryOxfordThaiEnglish` | `com.apple.dictionary.th-en.oup` | พจนานุกรมอังกฤษ-ไทย & ไทย-อังกฤษ ฉบับทันสมัยและสมบูรณ์ที่สุด | +| `DCSDictionaryDevotoOliItalian` | `com.apple.dictionary.it.Devoto-Oli` | Dizionario italiano da un affiliato di Oxford University Press | +| `DCSDictionaryMultidictionnaireFrench` | `com.apple.dictionary.fr.Multi` | Multidictionnaire de la langue française | +| `DCSDictionaryOxfordGreekEnglish` | `com.apple.dictionary.el-en.oup` | Stavropoulos Oxford Greek-English Learners Dictionary | +| `DCSDictionaryArkadasTurkish` | `com.apple.dictionary.tr.oup` | Arkadaş Türkçe Sözlük | +| `DCSDictionaryOxfordCroatianEnglish` | `com.apple.dictionary.hr-en.oup` | Praktický Anglicko-Chorvatský Slovník | +| `DCSDictionaryOxfordMalay` | `com.apple.dictionary.ms.oup` | Kamus Komprehensif Bahasa Melayu - Malay Monolingual Dictionary, Oxford Fajar | +| `DCSDictionaryHongKongChinese` | `com.apple.dictionary.zh_HK.common` | 商務新詞典(全新版) | +| `DCSDictionaryChineseIdioms` | `com.apple.dictionary.zh_CN.idioms` | 汉语成语词典 | +| `DCSDictionaryPonsFrenchGerman` | `com.apple.dictionary.fr-de.oup` | PONS Großwörterbuch Französisch Deutsch | +| `DCSDictionaryOxfordMalayEnglish` | `com.apple.dictionary.ms-en.oup` | Kamus Dwibahasa Melayu/Inggeris - English/Malay Bilingual Dictionary, Oxford Fajar | +| `DCSDictionaryOxfordDanishEnglish` | `com.apple.dictionary.da-en.oup` | Praktisk Engelsk-Dansk Ordbog | +| `DCSDictionaryChineseThesaurus` | `com.apple.dictionary.zh_CN.thes` | 现代汉语同义词典 | +| `DCSDictionaryLarousseSpanish` | `com.apple.dictionary.es.DGLEV` | Larousse Editorial Diccionario General de la Lengua Española | +| `DCSDictionaryOxfordBulgarian` | `com.apple.dictionary.bg.oup` | Тълковен речник на съвременния български език | +| `DCSDictionaryOxfordIndonesianEnglish` | `com.apple.dictionary.id-en.oup` | Oxford Study Indonesian Dictionary - Inggris-Indonesia • Indonesia-Inggris | +| `DCSDictionaryOxfordBengaliEnglish` | `com.apple.dictionary.bn-en.oup` | Oxford Bengali Dictionaries - বাংলা-ইংরেজি • ইংরেজি-বাংলা | +| `DCSDictionaryOxfordHungarianEnglish` | `com.apple.dictionary.hu-en.oup` | Magay Tamás szótár - Magyar-Angol • Angol-Magyar | +| `DCSDictionaryMotFinnishEnglish` | `com.apple.dictionary.fi-en.oup` | MOT sanakirja suomi-englanti, englanti-suomi | +| `DCSDictionaryNationalencyklopedinSwedish` | `com.apple.dictionary.sv.oup` | NE Ordbok | +| `DCSDictionaryCantoneseEnglish` | `com.apple.dictionary.yue-en.cp` | 英譯廣東口語詞典 | +| `DCSDictionaryModernGreek` | `com.apple.dictionary.el.oup` | Λεξικό της κοινής νεοελληνικής | +| `DCSDictionaryOxfordCzechEnglish` | `com.apple.dictionary.cs-en.oup` | Velký anglicko-český a česko-anglický slovník | +| `DCSDictionaryWikipedia` | `com.apple.dictionary.Wikipedia` | Wikipedia | +| `DCSDictionaryOxfordTurkishEnglish` | `com.apple.dictionary.tr-en.oup` | Oxford Turkish Dictionary - Türkçe-İngilizce • İngilizce-Türkçe | +| `DCSDictionaryModernChinese` | `com.apple.dictionary.zh_CN.SDCC` | 现代汉语规范词典 | +| `DCSDictionaryOxfordCantoneseEnglish` | `com.apple.dictionary.yue-en.oup` | 牛津粵英雙語詞典 | +| `DCSDictionaryDudenGerman` | `com.apple.dictionary.de.DDDSI` | Duden-Wissensnetz deutsche Sprache | +| `DCSDictionaryOxfordTamilEnglish` | `com.apple.dictionary.ta-en.oup` | Oxford Tamil Dictionaries - தமிழ்-ஆங்கிலம் • ஆங்கிலம்-தமிழ் | +| `DCSDictionaryHongKongChineseEnglishIdioms` | `com.apple.dictionary.zh_HK-en.idioms.cp` | 漢英對照成語詞典 | +| `DCSDictionaryLarousseCatalan` | `com.apple.dictionary.ca.oup` | Larousse Editorial Diccionari Manual de la llengua catalana | +| `DCSDictionaryOxfordDictionaryOfEnglish` | `com.apple.dictionary.ODE` | Oxford Dictionary of English | +| `DCSDictionaryOxfordMalayalamEnglish` | `com.apple.dictionary.ml-en.oup` | Oxford Malayalam Dictionaries - മലയാളം-ഇംഗ്ലീഷ് • ഇംഗ്ലീഷ്-മലയാളം | +| `DCSDictionaryOxfordKannadaEnglish` | `com.apple.dictionary.kn-en.oup` | Oxford Kannada Dictionaries - ಇಂಗ್ಲಿಷ್-ಕನ್ನಡ • ಕನ್ನಡ-ಇಂಗ್ಲಿಷ್ | +| `DCSDictionaryApple` | `com.apple.dictionary.AppleDictionary` | Apple Dictionary | +| `DCSDictionaryOxfordSlovakEnglish` | `com.apple.dictionary.sk-en.oup` | Veľký Anglicko-Slovenský Slovník | +| `DCSDictionaryTaiwaneseChinese` | `com.apple.dictionary.zh_TW.wn` | 五南國語活用辭典 | +| `DCSDictionaryOxfordUrduEnglish` | `com.apple.dictionary.ur-en.oup` | Oxford Urdu Dictionaries - اردو۔انگریزی • انگریزی-اردو | +| `DCSDictionaryOxfordTeluguEnglish` | `com.apple.dictionary.te-en.oup` | Oxford Telugu Dictionaries - తెలుగు-ఇంగ్లీష్ • ఇంగ్లీష్-తెలుగు | +| `DCSDictionaryRajpalHindi` | `com.apple.dictionary.hi.oup` | राजपाल हिन्दी शब्दकोश | +| `DCSDictionaryNorwegian` | `com.apple.dictionary.no.oup` | Norsk Ordbok | +| `DCSDictionaryOxfordHindiEnglish` | `com.apple.dictionary.hi-en.oup` | Oxford Hindi Dictionaries - हिन्दी-अंग्रेज़ी • अंग्रेज़ी-हिन्दी | +| `DCSDictionaryThai` | `com.apple.dictionary.th.oup` | พจนานุกรมไทย ฉบับทันสมัยและสมบูรณ์ | +| `DCSDictionaryCrownChineseJapanese` | `com.apple.dictionary.zhs-ja.Crown` | 超級クラウン中日辞典 / クラウン日中辞典 | +| `DCSDictionaryPolish` | `com.apple.dictionary.pl.oup` | Uniwersalny słownik języka polskiego | +| `DCSDictionaryOxfordGerman` | `com.apple.dictionary.OxfordGerman` | Oxford German Dictionary | +| `DCSDictionaryOxfordChineseEnglish` | `com.apple.dictionary.zh_CN-en.OCD` | 牛津英汉汉英词典 | +| `DCSDictionaryDanish` | `com.apple.dictionary.da.oup` | Politikens Nudansk Ordbog | +| `DCSDictionaryRomanian` | `com.apple.dictionary.ro.oup` | Dicţionarul explicativ al limbii române | +| `DCSDictionaryOxfordFrench` | `com.apple.dictionary.OxfordFrench` | Oxford-Hachette French Dictionary | +| `DCSDictionaryPrismaEnglish` | `com.apple.dictionary.nl-en.oup` | Prisma Handwoordenboek Engels | +| `DCSDictionaryDrEyeChineseEnglish` | `com.apple.dictionary.zh_TW-en.DrEye` | 譯典通英漢雙向字典 | +| `DCSDictionaryCroatian` | `com.apple.dictionary.hr.oup` | Hrvatski Enciklopedijski Rječnik | +| `DCSDictionaryNorwegianEnglish` | `com.apple.dictionary.no-en.oup` | Engelsk Ordbok | +| `DCSDictionaryEvenShoshanHebrew` | `com.apple.dictionary.he.oup` | מילון אבן-שושן מחודש ומותאם לשנות האלפיים | +| `DCSDictionaryNewAceKorean` | `com.apple.dictionary.ko.NewAce` | 뉴에이스 국어사전 | +| `DCSDictionaryNewAceKoreanEnglish` | `com.apple.dictionary.ko-en.NewAce` | 뉴에이스 영한사전 / 뉴에이스 한영사전 | +| `DCSDictionaryOxfordThesaurusOfEnglish` | `com.apple.dictionary.OTE` | Oxford Thesaurus of English | +| `DCSDictionaryOxfordGujaratiEnglish` | `com.apple.dictionary.gu-en.oup` | Oxford Gujarati Dictionaries - ગુજરાતી-અંગ્રેજી • અંગ્રેજી-ગુજરાતી | +| `DCSDictionaryTTY` | `com.apple.accessibility.dictionary.TTY` | TTY Dictionary | +| `DCSDictionaryOxfordSpanish` | `com.apple.dictionary.OxfordSpanish` | Gran Diccionario Oxford - Español-Inglés • Inglés-Español | +| `DCSDictionaryPortuguese` | `com.apple.dictionary.pt.oup` | Dicionário de Português licenciado para Oxford University Press | -~~~{objective-c} -NSString * const DCSAppleDictionaryName = @"Apple Dictionary"; -NSString * const DCSDutchDictionaryName = @"Prisma woordenboek Nederlands"; -NSString * const DCSFrenchDictionaryName = @"Multidictionnaire de la langue française"; -NSString * const DCSGermanDictionaryName = @"Duden-Wissensnetz deutsche Sprache"; -NSString * const DCSItalianDictionaryName = @"Dizionario italiano da un affiliato di Oxford University Press"; -NSString * const DCSJapaneseSupaDaijirinDictionaryName = @"スーパー大辞林"; -NSString * const DCSJapanese_EnglishDictionaryName = @"ウィズダム英和辞典 / ウィズダム和英辞典"; -NSString * const DCSKoreanDictionaryName = @"New Ace Korean Language Dictionary"; -NSString * const DCSKorean_EnglishDictionaryName = @"New Ace English-Korean Dictionary and New Ace Korean-English Dictionary"; -NSString * const DCSNewOxfordAmericanDictionaryName = @"New Oxford American Dictionary"; -NSString * const DCSOxfordAmericanWritersThesaurus = @"Oxford American Writer's Thesaurus"; -NSString * const DCSOxfordDictionaryOfEnglish = @"Oxford Dictionary of English"; -NSString * const DCSOxfordThesaurusOfEnglish = @"Oxford Thesaurus of English"; -NSString * const DCSSimplifiedChineseDictionaryName = @"现代汉语规范词典"; -NSString * const DCSSimplifiedChinese_EnglishDictionaryName = @"Oxford Chinese Dictionary"; -NSString * const DCSSpanishDictionaryName = @"Diccionario General de la Lengua Española Vox"; -NSString * const DCSWikipediaDictionaryName = @"Wikipedia"; -~~~ - -### Author +### Original Author Mattt ([@mattt](https://twitter.com/mattt)) diff --git a/Sources/DictionaryKit/TTTDictionary.m b/Sources/DictionaryKit/TTTDictionary.m index a3ae3e2..89ddb24 100644 --- a/Sources/DictionaryKit/TTTDictionary.m +++ b/Sources/DictionaryKit/TTTDictionary.m @@ -26,24 +26,6 @@ #import -NSString * const DCSAppleDictionaryName = @"Apple Dictionary"; -NSString * const DCSDutchDictionaryName = @"Prisma woordenboek Nederlands"; -NSString * const DCSFrenchDictionaryName = @"Multidictionnaire de la langue française"; -NSString * const DCSGermanDictionaryName = @"Duden-Wissensnetz deutsche Sprache"; -NSString * const DCSItalianDictionaryName = @"Dizionario italiano da un affiliato di Oxford University Press"; -NSString * const DCSJapaneseSupaDaijirinDictionaryName = @"スーパー大辞林"; -NSString * const DCSJapanese_EnglishDictionaryName = @"ウィズダム英和辞典 / ウィズダム和英辞典"; -NSString * const DCSKoreanDictionaryName = @"New Ace Korean Language Dictionary"; -NSString * const DCSKorean_EnglishDictionaryName = @"New Ace English-Korean Dictionary and New Ace Korean-English Dictionary"; -NSString * const DCSNewOxfordAmericanDictionaryName = @"New Oxford American Dictionary"; -NSString * const DCSOxfordAmericanWritersThesaurus = @"Oxford American Writer's Thesaurus"; -NSString * const DCSOxfordDictionaryOfEnglish = @"Oxford Dictionary of English"; -NSString * const DCSOxfordThesaurusOfEnglish = @"Oxford Thesaurus of English"; -NSString * const DCSSimplifiedChineseDictionaryName = @"现代汉语规范词典"; -NSString * const DCSSimplifiedChinese_EnglishDictionaryName = @"Oxford Chinese Dictionary"; -NSString * const DCSSpanishDictionaryName = @"Diccionario General de la Lengua Española Vox"; -NSString * const DCSWikipediaDictionaryName = @"Wikipedia"; - typedef NS_ENUM(NSInteger, TTTDictionaryRecordVersion) { TTTDictionaryVersionHTML = 0, TTTDictionaryVersionHTMLWithAppCSS = 1, @@ -127,20 +109,20 @@ + (NSSet *)availableDictionaries { return _availableDictionaries; } -+ (instancetype)dictionaryNamed:(NSString *)name { - static NSDictionary *_availableDictionariesKeyedByName = nil; ++ (instancetype)dictionaryWithIdentifier:(DCSDictionaryIdentifier)identifier { + static NSDictionary *_availableDictionariesKeyedByIdentifier = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - NSMutableDictionary *mutableAvailableDictionariesKeyedByName = [NSMutableDictionary dictionaryWithCapacity:[[self availableDictionaries] count]]; + NSMutableDictionary *mutableAvailableDictionariesKeyedByIdentifier = [NSMutableDictionary dictionaryWithCapacity:[[self availableDictionaries] count]]; for (TTTDictionary *dictionary in [self availableDictionaries]) { - mutableAvailableDictionariesKeyedByName[dictionary.name] = dictionary; + mutableAvailableDictionariesKeyedByIdentifier[dictionary.identifier] = dictionary; } - _availableDictionariesKeyedByName = [NSDictionary dictionaryWithDictionary:mutableAvailableDictionariesKeyedByName]; + _availableDictionariesKeyedByIdentifier = [NSDictionary dictionaryWithDictionary:mutableAvailableDictionariesKeyedByIdentifier]; }); - return _availableDictionariesKeyedByName[name]; + return _availableDictionariesKeyedByIdentifier[identifier]; } - (instancetype)initWithDictionaryRef:(DCSDictionaryRef)dictionary { @@ -182,7 +164,7 @@ - (NSArray *)entriesForSearchTerm:(NSString *)term { return [NSArray arrayWithArray:mutableEntries]; } -- (BOOL)containsSearchTerm:(nonnull NSString *)term { +- (BOOL)containsSearchTerm:(NSString *)term { CFRange termRange = DCSGetTermRangeInString(self.dictionary, (__bridge CFStringRef)term, 0); if (termRange.location == kCFNotFound) { return NO; @@ -219,3 +201,82 @@ - (NSUInteger)hash { } @end + +DCSDictionaryIdentifier const DCSDictionaryNewOxfordAmerican = @"com.apple.dictionary.NOAD"; +DCSDictionaryIdentifier const DCSDictionaryPrismaDutch = @"com.apple.dictionary.nl.Prisma"; +DCSDictionaryIdentifier const DCSDictionaryOxfordRussian = @"com.apple.dictionary.ru.oup"; +DCSDictionaryIdentifier const DCSDictionaryWisdomJapaneseEnglish = @"com.apple.dictionary.ja-en.WISDOM"; +DCSDictionaryIdentifier const DCSDictionaryOxfordUkrainianEnglish = @"com.apple.dictionary.uk-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordRussianEnglish = @"com.apple.dictionary.OxfordRussian"; +DCSDictionaryIdentifier const DCSDictionaryOxfordPortugueseEnglish = @"com.apple.dictionary.pt-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordAmericanWritersThesaurus = @"com.apple.dictionary.OAWT"; +DCSDictionaryIdentifier const DCSDictionaryNationalencyklopedinEnglishSwedish = @"com.apple.dictionary.sv-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordPunjabiEnglish = @"com.apple.dictionary.pa-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordPolishEnglish = @"com.apple.dictionary.pl-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordArabicEnglish = @"com.apple.dictionary.ar-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordItalian = @"com.apple.dictionary.OxfordItalian"; +DCSDictionaryIdentifier const DCSDictionaryLacVietVietnamese = @"com.apple.dictionary.vi-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordKazakhEnglish = @"com.apple.dictionary.kk-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryDaijirinJapanese = @"com.apple.dictionary.ja.Daijirin"; +DCSDictionaryIdentifier const DCSDictionaryOxfordThaiEnglish = @"com.apple.dictionary.th-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryDevotoOliItalian = @"com.apple.dictionary.it.Devoto-Oli"; +DCSDictionaryIdentifier const DCSDictionaryMultidictionnaireFrench = @"com.apple.dictionary.fr.Multi"; +DCSDictionaryIdentifier const DCSDictionaryOxfordGreekEnglish = @"com.apple.dictionary.el-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryArkadasTurkish = @"com.apple.dictionary.tr.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordCroatianEnglish = @"com.apple.dictionary.hr-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordMalay = @"com.apple.dictionary.ms.oup"; +DCSDictionaryIdentifier const DCSDictionaryHongKongChinese = @"com.apple.dictionary.zh_HK.common"; +DCSDictionaryIdentifier const DCSDictionaryChineseIdioms = @"com.apple.dictionary.zh_CN.idioms"; +DCSDictionaryIdentifier const DCSDictionaryPonsFrenchGerman = @"com.apple.dictionary.fr-de.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordMalayEnglish = @"com.apple.dictionary.ms-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordDanishEnglish = @"com.apple.dictionary.da-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryChineseThesaurus = @"com.apple.dictionary.zh_CN.thes"; +DCSDictionaryIdentifier const DCSDictionaryLarousseSpanish = @"com.apple.dictionary.es.DGLEV"; +DCSDictionaryIdentifier const DCSDictionaryOxfordBulgarian = @"com.apple.dictionary.bg.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordIndonesianEnglish = @"com.apple.dictionary.id-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordBengaliEnglish = @"com.apple.dictionary.bn-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordHungarianEnglish = @"com.apple.dictionary.hu-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryMotFinnishEnglish = @"com.apple.dictionary.fi-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryNationalencyklopedinSwedish = @"com.apple.dictionary.sv.oup"; +DCSDictionaryIdentifier const DCSDictionaryCantoneseEnglish = @"com.apple.dictionary.yue-en.cp"; +DCSDictionaryIdentifier const DCSDictionaryModernGreek = @"com.apple.dictionary.el.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordCzechEnglish = @"com.apple.dictionary.cs-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryWikipedia = @"com.apple.dictionary.Wikipedia"; +DCSDictionaryIdentifier const DCSDictionaryOxfordTurkishEnglish = @"com.apple.dictionary.tr-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryModernChinese = @"com.apple.dictionary.zh_CN.SDCC"; +DCSDictionaryIdentifier const DCSDictionaryOxfordCantoneseEnglish = @"com.apple.dictionary.yue-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryDudenGerman = @"com.apple.dictionary.de.DDDSI"; +DCSDictionaryIdentifier const DCSDictionaryOxfordTamilEnglish = @"com.apple.dictionary.ta-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryHongKongChineseEnglishIdioms = @"com.apple.dictionary.zh_HK-en.idioms.cp"; +DCSDictionaryIdentifier const DCSDictionaryLarousseCatalan = @"com.apple.dictionary.ca.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordDictionaryOfEnglish = @"com.apple.dictionary.ODE"; +DCSDictionaryIdentifier const DCSDictionaryOxfordMalayalamEnglish = @"com.apple.dictionary.ml-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordKannadaEnglish = @"com.apple.dictionary.kn-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryApple = @"com.apple.dictionary.AppleDictionary"; +DCSDictionaryIdentifier const DCSDictionaryOxfordSlovakEnglish = @"com.apple.dictionary.sk-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryTaiwaneseChinese = @"com.apple.dictionary.zh_TW.wn"; +DCSDictionaryIdentifier const DCSDictionaryOxfordUrduEnglish = @"com.apple.dictionary.ur-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordTeluguEnglish = @"com.apple.dictionary.te-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryRajpalHindi = @"com.apple.dictionary.hi.oup"; +DCSDictionaryIdentifier const DCSDictionaryNorwegian = @"com.apple.dictionary.no.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordHindiEnglish = @"com.apple.dictionary.hi-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryThai = @"com.apple.dictionary.th.oup"; +DCSDictionaryIdentifier const DCSDictionaryCrownChineseJapanese = @"com.apple.dictionary.zhs-ja.Crown"; +DCSDictionaryIdentifier const DCSDictionaryPolish = @"com.apple.dictionary.pl.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordGerman = @"com.apple.dictionary.OxfordGerman"; +DCSDictionaryIdentifier const DCSDictionaryOxfordChineseEnglish = @"com.apple.dictionary.zh_CN-en.OCD"; +DCSDictionaryIdentifier const DCSDictionaryDanish = @"com.apple.dictionary.da.oup"; +DCSDictionaryIdentifier const DCSDictionaryRomanian = @"com.apple.dictionary.ro.oup"; +DCSDictionaryIdentifier const DCSDictionaryOxfordFrench = @"com.apple.dictionary.OxfordFrench"; +DCSDictionaryIdentifier const DCSDictionaryPrismaEnglish = @"com.apple.dictionary.nl-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryDrEyeChineseEnglish = @"com.apple.dictionary.zh_TW-en.DrEye"; +DCSDictionaryIdentifier const DCSDictionaryCroatian = @"com.apple.dictionary.hr.oup"; +DCSDictionaryIdentifier const DCSDictionaryNorwegianEnglish = @"com.apple.dictionary.no-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryEvenShoshanHebrew = @"com.apple.dictionary.he.oup"; +DCSDictionaryIdentifier const DCSDictionaryNewAceKorean = @"com.apple.dictionary.ko.NewAce"; +DCSDictionaryIdentifier const DCSDictionaryNewAceKoreanEnglish = @"com.apple.dictionary.ko-en.NewAce"; +DCSDictionaryIdentifier const DCSDictionaryOxfordThesaurusOfEnglish = @"com.apple.dictionary.OTE"; +DCSDictionaryIdentifier const DCSDictionaryOxfordGujaratiEnglish = @"com.apple.dictionary.gu-en.oup"; +DCSDictionaryIdentifier const DCSDictionaryTTY = @"com.apple.accessibility.dictionary.TTY"; +DCSDictionaryIdentifier const DCSDictionaryOxfordSpanish = @"com.apple.dictionary.OxfordSpanish"; +DCSDictionaryIdentifier const DCSDictionaryPortuguese = @"com.apple.dictionary.pt.oup"; diff --git a/Sources/DictionaryKit/include/TTTDictionary.h b/Sources/DictionaryKit/include/TTTDictionary.h index 54c06df..ada9fd8 100644 --- a/Sources/DictionaryKit/include/TTTDictionary.h +++ b/Sources/DictionaryKit/include/TTTDictionary.h @@ -22,6 +22,8 @@ #import +typedef NSString * DCSDictionaryIdentifier NS_STRING_ENUM; + @interface TTTDictionaryEntry : NSObject @property (readonly, nonatomic, copy, nullable) NSString *headword; @@ -40,29 +42,87 @@ @property (readonly, nonatomic, copy, nullable) NSString *primaryLanguage; + (nonnull NSSet *)availableDictionaries; -+ (nullable instancetype)dictionaryNamed:(nonnull NSString *)name; ++ (nullable instancetype)dictionaryWithIdentifier:(nonnull DCSDictionaryIdentifier)identifier; - (nonnull NSArray *)entriesForSearchTerm:(nonnull NSString *)term; - (BOOL)containsSearchTerm:(nonnull NSString *)term NS_SWIFT_NAME(contains(searchTerm:)); @end -/// @name Constants - -extern NSString * const _Nonnull DCSAppleDictionaryName; -extern NSString * const _Nonnull DCSDutchDictionaryName; -extern NSString * const _Nonnull DCSFrenchDictionaryName; -extern NSString * const _Nonnull DCSGermanDictionaryName; -extern NSString * const _Nonnull DCSItalianDictionaryName; -extern NSString * const _Nonnull DCSJapaneseDictionaryName; -extern NSString * const _Nonnull DCSJapaneseSupaDaijirinDictionaryName; -extern NSString * const _Nonnull DCSJapanese_EnglishDictionaryName; -extern NSString * const _Nonnull DCSKoreanDictionaryName; -extern NSString * const _Nonnull DCSKorean_EnglishDictionaryName; -extern NSString * const _Nonnull DCSNewOxfordAmericanDictionaryName; -extern NSString * const _Nonnull DCSOxfordAmericanWritersThesaurus; -extern NSString * const _Nonnull DCSOxfordDictionaryOfEnglish; -extern NSString * const _Nonnull DCSOxfordThesaurusOfEnglish; -extern NSString * const _Nonnull DCSSimplifiedChineseDictionaryName; -extern NSString * const _Nonnull DCSSimplifiedChinese_EnglishDictionaryName; -extern NSString * const _Nonnull DCSSpanishDictionaryName; -extern NSString * const _Nonnull DCSWikipediaDictionaryName; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryNewOxfordAmerican; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryPrismaDutch; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordRussian; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryWisdomJapaneseEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordUkrainianEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordRussianEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordPortugueseEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordAmericanWritersThesaurus; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryNationalencyklopedinEnglishSwedish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordPunjabiEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordPolishEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordArabicEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordItalian; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryLacVietVietnamese; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordKazakhEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryDaijirinJapanese; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordThaiEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryDevotoOliItalian; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryMultidictionnaireFrench; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordGreekEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryArkadasTurkish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordCroatianEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordMalay; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryHongKongChinese; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryChineseIdioms; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryPonsFrenchGerman; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordMalayEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordDanishEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryChineseThesaurus; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryLarousseSpanish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordBulgarian; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordIndonesianEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordBengaliEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordHungarianEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryMotFinnishEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryNationalencyklopedinSwedish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryCantoneseEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryModernGreek; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordCzechEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryWikipedia; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordTurkishEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryModernChinese; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordCantoneseEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryDudenGerman; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordTamilEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryHongKongChineseEnglishIdioms; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryLarousseCatalan; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordDictionaryOfEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordMalayalamEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordKannadaEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryApple; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordSlovakEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryTaiwaneseChinese; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordUrduEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordTeluguEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryRajpalHindi; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryNorwegian; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordHindiEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryThai; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryCrownChineseJapanese; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryPolish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordGerman; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordChineseEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryDanish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryRomanian; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordFrench; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryPrismaEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryDrEyeChineseEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryCroatian; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryNorwegianEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryEvenShoshanHebrew; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryNewAceKorean; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryNewAceKoreanEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordThesaurusOfEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordGujaratiEnglish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryTTY; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryOxfordSpanish; +extern DCSDictionaryIdentifier const _Nonnull DCSDictionaryPortuguese;