エンジニアリングにはほど遠い

iPhoneアプリとかサイトとかをつくっていくブログです。

Swiftのスクリプトで辞書

最近英語を勉強していて、せっかくなので英語勉強ツールを作ろうと思った。 まずそのパーツとして手始めに辞書機能をつくることに。

Macの標準の辞書アプリの機能を使ってみるのが良いかなと思いやってみました。

dict.swift

import Foundation
import CoreServices

func definition(word: String) -> CFString? {
    return DCSCopyTextDefinition(nil, word, CFRangeMake(0, word.characters.count))?
    .takeUnretainedValue()
}

func trimmed(str: String) -> String {
    return str.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
}

func main() {
    if let word = Process.arguments.dropFirst().first as String? {
        if let definition = definition(trimmed(word)) {
            print(definition)
        }
    }
}

main()

実行(Englishは検索したい文字)

swift dict.swift English

または以下でコンパイルしてファイル生成し実行

swiftc dict.swift
./dict English

または1行目に#!/usr/bin/env swiftシバンを書いておけば以下でいきなり実行できる

chmod +x dict.swift
./dict.swift English

Process.argumentsで引数一覧が取れる。とても楽。
DCSCopyTextDefinitionが辞書を使うCoreServicesのメソッド。第一引数に辞書をいれられるみたい。今回はデフォルトの辞書を使うのでnil

次は文章を記憶していく機能を作りたい。