// (c) 2021 and onwards The vChewing Project (MIT-NTL License).
// ====================
// This code is released under the MIT license (SPDX-License-Identifier: MIT)
// ... with NTL restriction stating that:
// No trademark license is granted to use the trade names, trademarks, service
// marks, or product names of Contributor, except as required to fulfill notice
// requirements defined in MIT License.
import Foundation
public enum InputToken {
case date(dateDelta: Int = 0, yearDelta: Int = 0, shortened: Bool)
case timeNow(shortened: Bool)
case timeZone(shortened: Bool)
case week(dateDelta: Int = 0, shortened: Bool)
case yearLuna(yearDelta: Int = 0)
case yearZodiac(yearDelta: Int = 0)
public static func parse(rawToken: String) -> InputToken? {
guard rawToken.prefix(6) == "MACRO@" else { return nil }
var tokenComponents = rawToken.dropFirst(6).components(separatedBy: "_")
guard !tokenComponents.isEmpty else { return nil }
// TODO: 回頭得根據 tokenComponents 的成分分析需要採用哪個 InputToken。
// 這裡可以共用同一個 static lazy let 初期化的共用 DateFormatter 副本。
// 有參數的話,參數值在「:」右側記入。
return .timeNow(shortened: true) // 回头废掉这句
}
}
此前威注音就可以迅速輸入日期、時間、星期。
威注音 3.7.0 擬引入對 InputToken 的支援、方便使用者迅速輸入日期與年份。 與小麥注音的 InputMacro 日期迅速輸入的功能不同的是,威注音允許使用者在 Token 當中給出參數、以自訂曆法(比如令和曆)。 威注音對該新功能特性的實作方式也將會與小麥注音完全不同。
此次也順便解決簡體中文模式下輸入星期的時候「週」沒能換成簡化字問題。