mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-06 00:45:32 +00:00
43 lines
1.5 KiB
Swift
43 lines
1.5 KiB
Swift
//
|
|
// LexicalModelRepository.swift
|
|
// KeymanEngine
|
|
//
|
|
// Created by Randy Boring on 3/19/19.
|
|
// Copyright © 2019 SIL International. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
public protocol LexicalModelRepository: class {
|
|
typealias CompletionHandler = (Error?) -> Void
|
|
typealias ListCompletionHandler = ([LexicalModel]?, Error?) -> Void // one of the arguments will be nil, depending on success
|
|
|
|
var delegate: LexicalModelRepositoryDelegate? { get set }
|
|
var languages: [String: Language]? { get }
|
|
var lexicalModels: [String: LexicalModel]? { get }
|
|
|
|
func installableLexicalModel(withID lexicalModelID: String, languageID: String) -> InstallableLexicalModel?
|
|
func fetch(completionHandler: CompletionHandler?)
|
|
}
|
|
|
|
public extension LexicalModelRepository {
|
|
func installableLexicalModel(withID lexicalModelID: String, languageID: String) -> InstallableLexicalModel? {
|
|
guard let lexicalModel = lexicalModels?[lexicalModelID] else {
|
|
return nil
|
|
}
|
|
|
|
// If the lexicalModel (still) supports the requested language, use that one.
|
|
guard let language = lexicalModel.languages.first(where: {$0 == languageID}) ??
|
|
// Otherwise, just use the first language listed for the lexicalModel.
|
|
lexicalModel.languages.first
|
|
else {
|
|
return nil
|
|
}
|
|
|
|
return InstallableLexicalModel(lexicalModel: lexicalModel, languageID: language, isCustom: false)
|
|
}
|
|
|
|
func fetch(completionHandler: CompletionHandler? = nil) {
|
|
fetch(completionHandler: completionHandler)
|
|
}
|
|
}
|