Skip to content

Commit 78e30d6

Browse files
authored
[c59817] Fix for extracting relative dates in Russian and add unit tests for date extraction (#193)
* Fix regex for extracting relative dates in Russian and add unit tests for date extraction * Fix date extraction for Ukrainian and Belarusian languages and update tests
1 parent 71cc5eb commit 78e30d6

2 files changed

Lines changed: 39 additions & 1 deletion

File tree

‎packages/TGUIKit/Sources/Extensions.swift‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3388,7 +3388,7 @@ private func extractRelativeDates(from text: String, referenceDate: Date) -> [Ex
33883388
{ s in
33893389
let u = s
33903390
if u.hasPrefix("hour") || u == "h" || u.hasPrefix("hr")
3391-
|| u.hasPrefix("час") || u.hasPrefix("год") || u.hasPrefix("гад") // ru/uk/be
3391+
|| u.hasPrefix("час") || u.hasPrefix("годин") || u.hasPrefix("гадз") // ru/uk/be
33923392
|| u.hasPrefix("st") || u.hasPrefix("std") // de Stunde
33933393
|| u.hasPrefix("heure") || u.hasPrefix("heures") // fr
33943394
|| u.hasPrefix("hora") || u.hasPrefix("horas") // es
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import Foundation
2+
import XCTest
3+
import TGUIKit
4+
5+
final class DateExtractionTests: XCTestCase {
6+
private let referenceDate = Date(timeIntervalSince1970: 0)
7+
8+
func testRussianYearIsNotDetectedAsHour() {
9+
XCTAssertTrue(extractDates(from: "через 1 год", referenceDate: referenceDate).isEmpty)
10+
XCTAssertEqual(
11+
extractDates(from: "через 1 год = через 60 минут", referenceDate: referenceDate).map(\.text),
12+
["через 60 минут"]
13+
)
14+
}
15+
16+
func testRussianUkrainianAndBelarusianHoursAreDetected() {
17+
XCTAssertEqual(
18+
extractDates(from: "через 1 час", referenceDate: referenceDate).map(\.text),
19+
["через 1 час"]
20+
)
21+
XCTAssertEqual(
22+
extractDates(from: "через 2 години", referenceDate: referenceDate).map(\.text),
23+
["через 2 години"]
24+
)
25+
XCTAssertEqual(
26+
extractDates(from: "за годину", referenceDate: referenceDate).map(\.text),
27+
["за годину"]
28+
)
29+
XCTAssertEqual(
30+
extractDates(from: "через 5 годин", referenceDate: referenceDate).map(\.text),
31+
["через 5 годин"]
32+
)
33+
XCTAssertEqual(
34+
extractDates(from: "праз 1 гадзіну", referenceDate: referenceDate).map(\.text),
35+
["праз 1 гадзіну"]
36+
)
37+
}
38+
}

0 commit comments

Comments
 (0)