mirror of
https://github.com/mii443/AzooKeyKanaKanjiConverter.git
synced 2025-08-22 15:05:26 +00:00
[Fix] 漢数字周りのエラーを修正 (#104)
* fix: 漢数字変換が正しくない問題を修正 * test: add check for long number inptu
This commit is contained in:
@ -532,16 +532,13 @@ public final class DicdataStore {
|
||||
/// - convertTarget: カタカナ変換済みの文字列
|
||||
/// - note
|
||||
/// - 入力全体をカタカナとかひらがなに変換するやつは、Converter側でやっているので注意。
|
||||
private func getWiseDicdata(convertTarget: String, inputData: ComposingText, inputRange: Range<Int>) -> [DicdataElement] {
|
||||
func getWiseDicdata(convertTarget: String, inputData: ComposingText, inputRange: Range<Int>) -> [DicdataElement] {
|
||||
var result: [DicdataElement] = []
|
||||
result.append(contentsOf: self.getJapaneseNumberDicdata(head: convertTarget))
|
||||
if inputData.input[..<inputRange.startIndex].last?.character.isNumber != true && inputData.input[inputRange.endIndex...].first?.character.isNumber != true, let number = Float(convertTarget) {
|
||||
if inputData.input[..<inputRange.startIndex].last?.character.isNumber != true && inputData.input[inputRange.endIndex...].first?.character.isNumber != true, let number = Int(convertTarget) {
|
||||
result.append(DicdataElement(ruby: convertTarget, cid: CIDData.数.cid, mid: MIDData.小さい数字.mid, value: -14))
|
||||
if number.truncatingRemainder(dividingBy: 1) == 0 {
|
||||
let int = Int(number)
|
||||
if int < Int(1E18) && -Int(1E18) < int, let kansuji = self.numberFormatter.string(from: NSNumber(value: int)) {
|
||||
result.append(DicdataElement(word: kansuji, ruby: convertTarget, cid: CIDData.数.cid, mid: MIDData.小さい数字.mid, value: -16))
|
||||
}
|
||||
if number <= Int(1E12) && -Int(1E12) <= number, let kansuji = self.numberFormatter.string(from: NSNumber(value: number)) {
|
||||
result.append(DicdataElement(word: kansuji, ruby: convertTarget, cid: CIDData.数.cid, mid: MIDData.小さい数字.mid, value: -16))
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -144,7 +144,8 @@ final class ConverterTests: XCTestCase {
|
||||
("しんだどうぶつ", "死んだ動物"),
|
||||
("けいさん", "計算"),
|
||||
("azooKeyをつかう", "azooKeyを使う"),
|
||||
("じどうAIそうじゅう。", "自動AI操縦。")
|
||||
("じどうAIそうじゅう。", "自動AI操縦。"),
|
||||
("1234567890123456789012", "1234567890123456789012")
|
||||
]
|
||||
|
||||
// full input
|
||||
|
@ -6,7 +6,8 @@
|
||||
// Copyright © 2023 ensan. All rights reserved.
|
||||
//
|
||||
|
||||
import KanaKanjiConverterModuleWithDefaultDictionary
|
||||
@testable import KanaKanjiConverterModule
|
||||
@testable import KanaKanjiConverterModuleWithDefaultDictionary
|
||||
import XCTest
|
||||
|
||||
final class DicdataStoreTests: XCTestCase {
|
||||
@ -121,4 +122,15 @@ final class DicdataStoreTests: XCTestCase {
|
||||
XCTAssertTrue(result.contains(where: {$0.data.word == "使っ"}))
|
||||
}
|
||||
}
|
||||
|
||||
func testWiseDicdata() throws {
|
||||
let dicdataStore = DicdataStore(convertRequestOptions: requestOptions())
|
||||
do {
|
||||
var c = ComposingText()
|
||||
c.insertAtCursorPosition("999999999999", inputStyle: .roman2kana)
|
||||
let result = dicdataStore.getWiseDicdata(convertTarget: c.convertTarget, inputData: c, inputRange: 0..<12)
|
||||
XCTAssertTrue(result.contains(where: {$0.word == "999999999999"}))
|
||||
XCTAssertTrue(result.contains(where: {$0.word == "九千九百九十九億九千九百九十九万九千九百九十九"}))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user