From a9060ba03c3c70eb2dd04f8326ad1d1eeced1303 Mon Sep 17 00:00:00 2001 From: Joshua Lund Date: Tue, 10 Mar 2026 18:39:58 -0600 Subject: [PATCH] Update Num2Word to correctly convert phrases like "24 miles." Fixes #10. --- .../English/Num2Word/EnglishNum2Word.swift | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Sources/MisakiSwift/English/Num2Word/EnglishNum2Word.swift b/Sources/MisakiSwift/English/Num2Word/EnglishNum2Word.swift index 5da4f4e..2a168fc 100644 --- a/Sources/MisakiSwift/English/Num2Word/EnglishNum2Word.swift +++ b/Sources/MisakiSwift/English/Num2Word/EnglishNum2Word.swift @@ -17,11 +17,11 @@ struct EnglishNum2Word { (1000, "thousand"), (100, "hundred"), (90, "ninety"), (80, "eighty"), (70, "seventy"), (60, "sixty"), (50, "fifty"), (40, "forty"), - (30, "thirty") + (30, "thirty"), (20, "twenty") ] private let lowNumWords = [ - "twenty", "nineteen", "eighteen", "seventeen", + "nineteen", "eighteen", "seventeen", "sixteen", "fifteen", "fourteen", "thirteen", "twelve", "eleven", "ten", "nine", "eight", "seven", "six", "five", "four", "three", "two", @@ -108,11 +108,11 @@ struct EnglishNum2Word { return negWord + toCardinal(abs(number)) } - if number < 21 { - return lowNumWords[20 - number] + if number < 20 { + return lowNumWords[19 - number] } - // Handle numbers from 21-99 + // Handle numbers from 20-99 if number < 100 { let tens = (number / 10) * 10 let ones = number % 10 @@ -120,7 +120,7 @@ struct EnglishNum2Word { return midNumWords.first { $0.0 == tens }?.1 ?? "" } else { let tensWord = midNumWords.first { $0.0 == tens }?.1 ?? "" - let onesWord = lowNumWords[20 - ones] + let onesWord = lowNumWords[19 - ones] return "\(tensWord)-\(onesWord)" } }