mirror of
https://github.com/mii443/AzooKeyKanaKanjiConverter.git
synced 2025-08-22 15:05:26 +00:00
47 lines
1.6 KiB
Swift
47 lines
1.6 KiB
Swift
import Foundation
|
|
|
|
extension KanaKanjiConverter {
|
|
func commaSeparatedNumberCandidates(_ inputData: ComposingText) -> [Candidate] {
|
|
var text = inputData.convertTarget
|
|
guard !text.isEmpty else { return [] }
|
|
|
|
var negative = false
|
|
if text.first == "-" {
|
|
negative = true
|
|
text.removeFirst()
|
|
}
|
|
let parts = text.split(separator: ".", omittingEmptySubsequences: false)
|
|
guard parts.count <= 2,
|
|
parts.allSatisfy({ !$0.isEmpty && $0.allSatisfy({ $0.isNumber && $0.isASCII }) }) else {
|
|
return []
|
|
}
|
|
let integerPart = parts[0]
|
|
guard integerPart.count > 3 else { return [] }
|
|
|
|
var reversed = Array(integerPart.reversed())
|
|
var formatted = ""
|
|
for (i, ch) in reversed.enumerated() {
|
|
if i > 0 && i % 3 == 0 {
|
|
formatted.append(",")
|
|
}
|
|
formatted.append(ch)
|
|
}
|
|
let integerString = String(formatted.reversed())
|
|
var result = (negative ? "-" : "") + integerString
|
|
if parts.count == 2 {
|
|
let fractional = parts[1]
|
|
result += "." + fractional
|
|
}
|
|
|
|
let ruby = inputData.convertTarget.toKatakana()
|
|
let candidate = Candidate(
|
|
text: result,
|
|
value: -10,
|
|
correspondingCount: inputData.input.count,
|
|
lastMid: MIDData.一般.mid,
|
|
data: [DicdataElement(word: result, ruby: ruby, cid: CIDData.固有名詞.cid, mid: MIDData.一般.mid, value: -10)]
|
|
)
|
|
return [candidate]
|
|
}
|
|
}
|