InputState // Add certain flags in InputStateProtocol.

This commit is contained in:
ShikiSuen 2022-09-02 21:39:11 +08:00
parent 17078b97cf
commit 5bec245a02
1 changed files with 14 additions and 42 deletions

View File

@ -29,6 +29,8 @@ public enum StateType {
// InputState // InputState
public protocol InputStateProtocol { public protocol InputStateProtocol {
var type: StateType { get } var type: StateType { get }
var hasBuffer: Bool { get }
var isCandidateContainer: Bool { get }
} }
/// ctlInputMethod /// ctlInputMethod
@ -66,10 +68,9 @@ public protocol InputStateProtocol {
public enum InputState { public enum InputState {
/// .Deactivated: 使使 /// .Deactivated: 使使
class Deactivated: InputStateProtocol { class Deactivated: InputStateProtocol {
let hasBuffer: Bool = false
let isCandidateContainer: Bool = false
public var type: StateType { .ofDeactivated } public var type: StateType { .ofDeactivated }
var description: String {
"<InputState.Deactivated>"
}
} }
// MARK: - // MARK: -
@ -77,15 +78,10 @@ public enum InputState {
/// .Empty: 使 /// .Empty: 使
/// ///
class Empty: InputStateProtocol { class Empty: InputStateProtocol {
let hasBuffer: Bool = false
let isCandidateContainer: Bool = false
public var type: StateType { .ofEmpty } public var type: StateType { .ofEmpty }
let composingBuffer: String = ""
var composingBuffer: String {
""
}
var description: String {
"<InputState.Empty>"
}
} }
// MARK: - // MARK: -
@ -95,15 +91,14 @@ public enum InputState {
/// .Empty() /// .Empty()
class EmptyIgnoringPreviousState: Empty { class EmptyIgnoringPreviousState: Empty {
override public var type: StateType { .ofEmptyIgnoringPreviousState } override public var type: StateType { .ofEmptyIgnoringPreviousState }
override var description: String {
"<InputState.EmptyIgnoringPreviousState>"
}
} }
// MARK: - // MARK: -
/// .Committing: /// .Committing:
class Committing: InputStateProtocol { class Committing: InputStateProtocol {
let hasBuffer: Bool = false
let isCandidateContainer: Bool = false
public var type: StateType { .ofCommitting } public var type: StateType { .ofCommitting }
private(set) var textToCommit: String = "" private(set) var textToCommit: String = ""
@ -112,10 +107,6 @@ public enum InputState {
self.textToCommit = textToCommit self.textToCommit = textToCommit
ChineseConverter.ensureCurrencyNumerals(target: &self.textToCommit) ChineseConverter.ensureCurrencyNumerals(target: &self.textToCommit)
} }
var description: String {
"<InputState.Committing textToCommit:\(textToCommit)>"
}
} }
// MARK: - // MARK: -
@ -123,6 +114,8 @@ public enum InputState {
/// .AssociatedPhrases: /// .AssociatedPhrases:
/// 西 .NotEmpty /// 西 .NotEmpty
class AssociatedPhrases: InputStateProtocol { class AssociatedPhrases: InputStateProtocol {
let hasBuffer: Bool = false
let isCandidateContainer: Bool = true
public var type: StateType { .ofAssociatedPhrases } public var type: StateType { .ofAssociatedPhrases }
private(set) var candidates: [(String, String)] = [] private(set) var candidates: [(String, String)] = []
private(set) var isTypingVertical: Bool = false private(set) var isTypingVertical: Bool = false
@ -141,10 +134,6 @@ public enum InputState {
) )
return attributedString return attributedString
} }
var description: String {
"<InputState.AssociatedPhrases, candidates:\(candidates), isTypingVertical:\(isTypingVertical)>"
}
} }
// MARK: - // MARK: -
@ -156,6 +145,8 @@ public enum InputState {
/// - .ChoosingCandidate: 使 /// - .ChoosingCandidate: 使
/// - .SymbolTable: /// - .SymbolTable:
class NotEmpty: InputStateProtocol { class NotEmpty: InputStateProtocol {
let hasBuffer: Bool = true
var isCandidateContainer: Bool { false }
public var type: StateType { .ofNotEmpty } public var type: StateType { .ofNotEmpty }
private(set) var composingBuffer: String private(set) var composingBuffer: String
private(set) var cursorIndex: Int = 0 { didSet { cursorIndex = max(cursorIndex, 0) } } private(set) var cursorIndex: Int = 0 { didSet { cursorIndex = max(cursorIndex, 0) } }
@ -218,10 +209,6 @@ public enum InputState {
} }
return attributedString return attributedString
} }
var description: String {
"<InputState.NotEmpty, composingBuffer:\(composingBuffer), cursorIndex:\(cursorIndex)>"
}
} }
// MARK: - // MARK: -
@ -248,10 +235,6 @@ public enum InputState {
composingBuffer: composingBuffer, cursorIndex: cursorIndex, reading: reading, nodeValuesArray: nodeValuesArray composingBuffer: composingBuffer, cursorIndex: cursorIndex, reading: reading, nodeValuesArray: nodeValuesArray
) )
} }
override var description: String {
"<InputState.Inputting, composingBuffer:\(composingBuffer), cursorIndex:\(cursorIndex)>, textToCommit:\(textToCommit)>"
}
} }
// MARK: - // MARK: -
@ -399,10 +382,6 @@ public enum InputState {
return attributedString return attributedString
} }
override var description: String {
"<InputState.Marking, composingBuffer:\(composingBuffer), cursorIndex:\(cursorIndex), markedRange:\(markedRange)>"
}
var convertedToInputting: Inputting { var convertedToInputting: Inputting {
let state = Inputting( let state = Inputting(
composingBuffer: composingBuffer, cursorIndex: cursorIndex, reading: reading, nodeValuesArray: nodeValuesArray composingBuffer: composingBuffer, cursorIndex: cursorIndex, reading: reading, nodeValuesArray: nodeValuesArray
@ -447,6 +426,7 @@ public enum InputState {
/// .ChoosingCandidate: 使 /// .ChoosingCandidate: 使
class ChoosingCandidate: NotEmpty { class ChoosingCandidate: NotEmpty {
override var isCandidateContainer: Bool { true }
override public var type: StateType { .ofChoosingCandidate } override public var type: StateType { .ofChoosingCandidate }
private(set) var candidates: [(String, String)] private(set) var candidates: [(String, String)]
private(set) var isTypingVertical: Bool private(set) var isTypingVertical: Bool
@ -534,10 +514,6 @@ public enum InputState {
return attributedStringResult return attributedStringResult
} }
override var description: String {
"<InputState.ChoosingCandidate, candidates:\(candidates), isTypingVertical:\(isTypingVertical), composingBuffer:\(composingBuffer), cursorIndex:\(cursorIndex)>"
}
} }
// MARK: - // MARK: -
@ -574,9 +550,5 @@ public enum InputState {
) )
return attributedString return attributedString
} }
override var description: String {
"<InputState.SymbolTable, candidates:\(candidates), isTypingVertical:\(isTypingVertical)>"
}
} }
} }