LMs // Add documentation to LMCoreNS & LMCoreEX.

This commit is contained in:
ShikiSuen 2022-05-25 15:08:16 +08:00
parent 0ff626b80a
commit 4419548fd8
2 changed files with 91 additions and 8 deletions

View File

@ -23,26 +23,38 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/// LMCore LMCoreEX range
/// range strData
/// C++ ParselessLM Swift
/// For
import Foundation
extension vChewing {
/// LMCore LMCoreEX range
/// range strData
/// C++ ParselessLM Swift
/// For
@frozen public struct LMCoreEX {
/// 便 strData
var rangeMap: [String: [Range<String.Index>]] = [:]
///
var strData: String = ""
///
var shouldReverse: Bool = false
var allowConsolidation: Bool = false
///
var defaultScore: Double = 0
///
var shouldForceDefaultScore: Bool = false
///
public var count: Int {
rangeMap.count
}
///
///
/// - parameters:
/// - reverse:
/// - consolidate: 使
/// - defaultScore:
/// - forceDefaultScore:
public init(
reverse: Bool = false, consolidate: Bool = false, defaultScore scoreDefault: Double = 0,
forceDefaultScore: Bool = false
@ -54,10 +66,14 @@ extension vChewing {
shouldForceDefaultScore = forceDefaultScore
}
///
public func isLoaded() -> Bool {
!rangeMap.isEmpty
}
///
/// - parameters:
/// - path:
@discardableResult public mutating func open(_ path: String) -> Bool {
if isLoaded() {
return false
@ -89,6 +105,7 @@ extension vChewing {
return true
}
///
public mutating func close() {
if isLoaded() {
rangeMap.removeAll()
@ -97,6 +114,9 @@ extension vChewing {
// MARK: - Advanced features
/// macOS Console.app
///
///
public func dump() {
var strDump = ""
for entry in rangeMap {
@ -110,12 +130,21 @@ extension vChewing {
IME.prtDebugIntel(strDump)
}
/// 使 strData
///
///
/// - parameters:
/// - precedingKey:
/// - key:
public func bigramsForKeys(precedingKey: String, key: String) -> [Megrez.Bigram] {
// Swift
// [Megrez.Bigram]()
precedingKey == key ? [Megrez.Bigram]() : [Megrez.Bigram]()
}
/// strData
/// - parameters:
/// - key:
public func unigramsFor(key: String) -> [Megrez.Unigram] {
var grams: [Megrez.Unigram] = []
if let arrRangeRecords: [Range<String.Index>] = rangeMap[key] {
@ -136,6 +165,9 @@ extension vChewing {
return grams
}
///
/// - parameters:
/// - key:
public func hasUnigramsFor(key: String) -> Bool {
rangeMap[key] != nil
}
@ -145,6 +177,9 @@ extension vChewing {
// MARK: - StringView Ranges Extension (by Isaac Xen)
extension String {
///
/// - parameters:
/// - splitBy:
fileprivate func ranges(splitBy separator: Element) -> [Range<String.Index>] {
var startIndex = startIndex
return split(separator: separator).reduce(into: []) { ranges, substring in

View File

@ -22,24 +22,40 @@ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/// LMCore LMCoreNS plist
/// mac
import Foundation
extension vChewing {
/// LMCore LMCoreNS plist
/// mac
/// 使 plist
@frozen public struct LMCoreNS {
/// UTF8
var rangeMap: [String: [Data]] = [:]
/// LMCoreNS
var strData: String = ""
///
var shouldReverse: Bool = false
/// 使
var allowConsolidation: Bool = false
///
var defaultScore: Double = 0
///
var shouldForceDefaultScore: Bool = false
///
public var count: Int {
rangeMap.count
}
///
///
/// LMCoreNS 便
///
/// - parameters:
/// - reverse:
/// - consolidate: 使
/// - defaultScore:
/// - forceDefaultScore:
public init(
reverse: Bool = false, consolidate: Bool = false, defaultScore scoreDefault: Double = 0,
forceDefaultScore: Bool = false
@ -51,10 +67,14 @@ extension vChewing {
shouldForceDefaultScore = forceDefaultScore
}
///
public func isLoaded() -> Bool {
!rangeMap.isEmpty
}
///
/// - parameters:
/// - path:
@discardableResult public mutating func open(_ path: String) -> Bool {
if isLoaded() {
return false
@ -77,6 +97,7 @@ extension vChewing {
return true
}
///
public mutating func close() {
if isLoaded() {
rangeMap.removeAll()
@ -85,6 +106,9 @@ extension vChewing {
// MARK: - Advanced features
/// macOS Console.app
///
///
public func dump() {
var strDump = ""
for entry in rangeMap {
@ -104,12 +128,21 @@ extension vChewing {
IME.prtDebugIntel(strDump)
}
/// 使 UTF8
///
///
/// - parameters:
/// - precedingKey:
/// - key:
public func bigramsForKeys(precedingKey: String, key: String) -> [Megrez.Bigram] {
// Swift
// [Megrez.Bigram]()
precedingKey == key ? [Megrez.Bigram]() : [Megrez.Bigram]()
}
/// UTF8
/// - parameters:
/// - key:
public func unigramsFor(key: String) -> [Megrez.Unigram] {
var grams: [Megrez.Unigram] = []
if let arrRangeRecords: [Data] = rangeMap[cnvPhonabetToASCII(key)] {
@ -131,10 +164,20 @@ extension vChewing {
return grams
}
///
/// - parameters:
/// - key:
public func hasUnigramsFor(key: String) -> Bool {
rangeMap[cnvPhonabetToASCII(key)] != nil
}
///
///
/// 使 plist
///
/// ASCII
/// - parameters:
/// - incoming:
func cnvPhonabetToASCII(_ incoming: String) -> String {
let dicPhonabet2ASCII = [
"": "b", "": "p", "": "m", "": "f", "": "d", "": "t", "": "n", "": "l", "": "g", "": "k", "": "h",
@ -151,6 +194,11 @@ extension vChewing {
return strOutput
}
///
///
/// ASCII
/// - parameters:
/// - incoming:
func restorePhonabetFromASCII(_ incoming: String) -> String {
let dicPhonabet4ASCII = [
"b": "", "p": "", "m": "", "f": "", "d": "", "t": "", "n": "", "l": "", "g": "", "k": "", "h": "",