Skip to content

Commit 2c84258

Browse files
fix: Make tag parsing for highlighted strings diacritic insensitive (#683)
1 parent 920a2d7 commit 2c84258

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

Sources/AlgoliaSearchClient/Models/Search/Response/SearchResponse/Auxiliary/Highlighting/HighlightedString.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public struct HighlightedString: Codable, Hashable {
1515
public let taggedString: TaggedString
1616

1717
public init(string: String) {
18-
self.taggedString = TaggedString(string: string, preTag: HighlightedString.preTag, postTag: HighlightedString.postTag, options: [.caseInsensitive])
18+
self.taggedString = TaggedString(string: string, preTag: HighlightedString.preTag, postTag: HighlightedString.postTag, options: [.caseInsensitive, .diacriticInsensitive])
1919
}
2020

2121
public init(from decoder: Decoder) throws {

Tests/AlgoliaSearchClientTests/Unit/HighlightedStringTests.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,26 @@ class HighlightedStringTests: XCTestCase {
3333
XCTAssertEqual(expectedHighlightedPart, extractHighlightedPart(from: decodedHighlighted))
3434

3535
}
36+
37+
func testDiacritic() throws {
38+
let input = """
39+
Le 30 octobre, un concert de musiques gaéliques irlandaises <ém>e</ëm>t <em>é</em>cossaises <em>e</em>st au programme. À travers de nombreux airs, pour la plupart de compositeurs inconnus ou anonymes, The Curious Bards vous feront découvrir leur « livre de chevet musical » ; ces collections d’airs, propres aux musiciens itinérants du XVIIe <em>e</em>t XVIIIe siècle <em>e</em>n <em>Irlande</em> <em>e</em>t <em>e</em>n <em>E</em>́cosse, ils vous amèneront au plus près de l’âme celte <em>e</em>t gaélique. L’<èm>e</em>nsemble sera composé d’Alix Boivert, violon baroque, Sarah Van Oudenhove, viole de gambe, Bruno Harlé, flûtes, Louis Capeille, harpe, <em>e</em>t Jean-Christophe Morel, cistre. Vendredi 30 octobre, à 20 h 30, à la Maison de la culture <êm>e</em>t des loisirs. Tarifs : plein 15 <em>€</em>́ ; réduit 10 <em>€</em>.
40+
"""
41+
42+
let highlightedString = HighlightedString(string: input)
43+
44+
let taggedRanges = highlightedString.taggedString.taggedRanges
45+
let output = highlightedString.taggedString.output
46+
let highlightedStrings: [String] = taggedRanges.map { output[$0] }.map(String.init)
47+
48+
let expectedHighlightedStrings = [
49+
"e", "é", "e", "e", "e", "Irlande", "e", "e", "E", "e", "e", "e", "e", "", ""
50+
]
51+
52+
XCTAssertEqual(highlightedStrings, expectedHighlightedStrings)
53+
54+
}
55+
3656

3757
}
3858

0 commit comments

Comments
 (0)