mirror of
https://github.com/mii443/AzooKeyKanaKanjiConverter.git
synced 2025-08-22 15:05:26 +00:00
82 lines
3.4 KiB
Swift
82 lines
3.4 KiB
Swift
public protocol SpecialCandidateProvider: Sendable {
|
|
@MainActor
|
|
func provideCandidates(converter: KanaKanjiConverter, inputData: ComposingText, options: ConvertRequestOptions) -> [Candidate]
|
|
}
|
|
|
|
public struct CalendarSpecialCandidateProvider: SpecialCandidateProvider {
|
|
public init() {}
|
|
@MainActor public func provideCandidates(converter: KanaKanjiConverter, inputData: ComposingText, options _: ConvertRequestOptions) -> [Candidate] {
|
|
converter.toWarekiCandidates(inputData) + converter.toSeirekiCandidates(inputData)
|
|
}
|
|
}
|
|
|
|
public struct EmailAddressSpecialCandidateProvider: SpecialCandidateProvider {
|
|
public init() {}
|
|
@MainActor public func provideCandidates(converter: KanaKanjiConverter, inputData: ComposingText, options _: ConvertRequestOptions) -> [Candidate] {
|
|
converter.toEmailAddressCandidates(inputData)
|
|
}
|
|
}
|
|
|
|
public struct TypographySpecialCandidateProvider: SpecialCandidateProvider {
|
|
public init() {}
|
|
@MainActor public func provideCandidates(converter: KanaKanjiConverter, inputData: ComposingText, options _: ConvertRequestOptions) -> [Candidate] {
|
|
converter.typographicalCandidates(inputData)
|
|
}
|
|
}
|
|
|
|
public struct UnicodeSpecialCandidateProvider: SpecialCandidateProvider {
|
|
public init() {}
|
|
@MainActor public func provideCandidates(converter: KanaKanjiConverter, inputData: ComposingText, options _: ConvertRequestOptions) -> [Candidate] {
|
|
converter.unicodeCandidates(inputData)
|
|
}
|
|
}
|
|
|
|
public struct VersionSpecialCandidateProvider: SpecialCandidateProvider {
|
|
public init() {}
|
|
@MainActor public func provideCandidates(converter: KanaKanjiConverter, inputData: ComposingText, options: ConvertRequestOptions) -> [Candidate] {
|
|
converter.toVersionCandidate(inputData, options: options)
|
|
}
|
|
}
|
|
|
|
public struct TimeExpressionSpecialCandidateProvider: SpecialCandidateProvider {
|
|
public init() {}
|
|
@MainActor public func provideCandidates(converter: KanaKanjiConverter, inputData: ComposingText, options _: ConvertRequestOptions) -> [Candidate] {
|
|
converter.convertToTimeExpression(inputData)
|
|
}
|
|
}
|
|
|
|
public struct CommaSeparatedNumberSpecialCandidateProvider: SpecialCandidateProvider {
|
|
public init() {}
|
|
@MainActor public func provideCandidates(converter: KanaKanjiConverter, inputData: ComposingText, options _: ConvertRequestOptions) -> [Candidate] {
|
|
converter.commaSeparatedNumberCandidates(inputData)
|
|
}
|
|
}
|
|
|
|
public extension SpecialCandidateProvider where Self == CalendarSpecialCandidateProvider {
|
|
static var calendar: Self { .init() }
|
|
}
|
|
|
|
public extension SpecialCandidateProvider where Self == EmailAddressSpecialCandidateProvider {
|
|
static var emailAddress: Self { .init() }
|
|
}
|
|
|
|
public extension SpecialCandidateProvider where Self == TypographySpecialCandidateProvider {
|
|
static var typography: Self { .init() }
|
|
}
|
|
|
|
public extension SpecialCandidateProvider where Self == UnicodeSpecialCandidateProvider {
|
|
static var unicode: Self { .init() }
|
|
}
|
|
|
|
public extension SpecialCandidateProvider where Self == VersionSpecialCandidateProvider {
|
|
static var version: Self { .init() }
|
|
}
|
|
|
|
public extension SpecialCandidateProvider where Self == TimeExpressionSpecialCandidateProvider {
|
|
static var timeExpression: Self { .init() }
|
|
}
|
|
|
|
public extension SpecialCandidateProvider where Self == CommaSeparatedNumberSpecialCandidateProvider {
|
|
static var commaSeparatedNumber: Self { .init() }
|
|
}
|