gpt4 book ai didi

ruby - 在 OSX 上以编程方式使用 Dictionary.app 的词库功能(最好通过 Ruby)

转载 作者:数据小太阳 更新时间:2023-10-29 06:45:26 25 4
gpt4 key购买 nike

我需要编写一个 Ruby 方法,它接受一个词,通过 OS 10.5 的 Dictionary.app 的同义词库函数运行它,并返回备选词。

如果 Ruby 方法最终调用命令行,那很好;我只需要能够从 Ruby 以编程方式完成它。

查看 Ruby OSA 后,我意识到可以通过某些词典服务访问词典 [ http://discussions.apple.com/thread.jspa?threadID=1561332] , 但我真的不明白。

有人看到一个简单的解决方案吗?

我也准备制作一个 Automator 工作流程并从命令行调用它,但由于某种原因我无法从 shell 中正确地为“获取定义”函数提供一个词(它一直说它不能'找到这个词,但是当手动查找时它起作用了)。

最佳答案

不幸的是,唯一的编程接口(interface)(字典服务)不支持设置字典。

但是,它确实会引用词典首选项以使用指定的第一个词典,因此您可能会以非常丑陋的方式重置首选项,使同义词库成为唯一可用的词典。

这真的很恶心,如果吸入可能会坏掉,但它应该有效:

/* compile with:

gcc -o thesaurus -framework CoreServices -framework Foundation thesaurus.m
*/

#import <Foundation/Foundation.h>
#include <CoreServices/CoreServices.h>

int main(int argc, char *argv[]) {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *dictionaryPrefs =
[[userDefaults persistentDomainForName:@"com.apple.DictionaryServices"] mutableCopy];

NSArray *activeDictionaries = [dictionaryPrefs objectForKey:@"DCSActiveDictionaries"];

[dictionaryPrefs setObject:
[NSArray arrayWithObject:@"/Library/Dictionaries/Oxford American Writer's Thesaurus.dictionary"]
forKey:@"DCSActiveDictionaries"];
[userDefaults setPersistentDomain:dictionaryPrefs forName:@"com.apple.DictionaryServices"];

NSString *word = [NSString stringWithUTF8String:argv[1]];
puts([(NSString *)DCSCopyTextDefinition(NULL, (CFStringRef)word,
CFRangeMake(0, [word length])) UTF8String]);

[dictionaryPrefs setObject:activeDictionaries forKey: @"DCSActiveDictionaries"];
[userDefaults setPersistentDomain:dictionaryPrefs forName:@"com.apple.DictionaryServices"];
}

并将其用作:

% ./thesaurus string
noun
1 twine, cord, yarn, thread, strand.
2 chain, group, firm, company.
3 series, succession, chain, sequence, run, streak.
4 line, train, procession, queue, file, column, convoy, cavalcade.
[...]

关于ruby - 在 OSX 上以编程方式使用 Dictionary.app 的词库功能(最好通过 Ruby),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/784549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com