spiegel-keyman/ios/engine/KMEI/KeymanEngine/Classes/KeyboardRepository/LexicalModelRepository.swift
Randy Boring 0af7ba20b6 rename Date+ISOExtension.swift to Formatter+DateISOExtension.swift
remove unnecessary ?? as left hand side was always true
2019-05-01 18:49:06 -05:00

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)
}
}